，必须等到已经没有其它线程在执行管程中的某个子程序。 在管程的简单实现中，编译器为每个管程对象自动加入一把私有的互斥锁。该互斥锁初始状态为解锁，在管程的每个公共子程序的入口给该互斥锁加锁，在管程的每个公共子程序的出口给该互斥锁解锁。这个例子中的不变量是「任何操作执行前 balance 变数必须反映正确的余额」。一般而言，不变量的条件不被写在程式中，而在註解中有相关说明，然而Eiffel程序设计语言显式检查不变量。
条件变数(Condition Variable).对于许多应