是否Python threading.Condition.wait()立即挂起执行



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

线程确实屈服了。这种屈服是由于pthread_cond_waitPyThread_acquire_lock中的等效悬浮机制的实现。由于条件变量是使用系统调用接口实现的,而Python使用本机线程,因此操作系统调度器负责切换到另一个线程。

此外,GIL在深入Python内部调用之前被释放。最后,最后一块拼图是threading.Condition.wait中获取锁的调用。

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

最新更新