Python threading.Condition.wait()是否立即暂停执行?

时间:2011-08-10 13:50:17

标签: python multithreading suspend condition-variable

如果我在python条件变量上调用wait(),调用线程是否暂停执行并产生或者是否一直阻塞直到下一个上下文切换?

2 个答案:

答案 0 :(得分:2)

线程确实屈服了。这种屈服是由pthread_cond_wait中的PyThread_acquire_lock或等效暂停机制的实施所致。由于条件变量是使用系统调用接口实现的,并且Python使用本机线程,因此操作系统调度程序负责切换到另一个线程。

此外,GIL is released在深入Python内部调用之前。最后,最后一个难题是调用threading.Condition.wait获取锁定。

答案 1 :(得分:1)

  

wait()方法释放锁,然后阻塞直到锁定为止   通过notify()或notifyAll()调用唤醒相同的条件   另一个线程中的变量。一旦被唤醒,它就会重新获得锁定   回报。也可以指定超时。

它会一直阻止,直到通知条件。