0

如果我调用wait()python 条件变量,调用线程是暂停执行并产生还是继续阻塞直到下一次上下文切换?

4

2 回答 2

2

线程确实产生了。这种屈服是由于pthread_cond_waitin 中的实现或等效的挂起机制PyThread_acquire_lock。由于条件变量是使用系统调用接口实现的,而 Python 使用的是原生线程,操作系统调度器负责切换到另一个线程。

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

于 2011-08-10T14:39:19.623 回答
1

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

它会阻塞直到通知条件。

于 2011-08-10T13:53:58.510 回答