2011-08-10 65 views

回答

2

线程确实屈服。这个收益是由于执行pthread_cond_waitPyThread_acquire_lock中的等效挂起机制。由于条件变量是使用系统调用接口实现的,并且Python使用本地线程,操作系统调度程序负责切换到另一个线程。

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

1

等待()方法释放锁,然后阻塞,直到它是 通过通知()或notifyAll的()调用在另一个线程相同的条件下 变量唤醒。一旦被唤醒,它将重新获得锁定并返回 。也可以指定超时。

它阻塞,直到通知条件。

+0

相信与否我实际上是先试着阅读手册。如果它“阻止”执行,为什么我不应该使用自旋锁? –

+0

等待在自旋锁上的线程会烧毁cpu,而等待条件的线程不会烧毁cpu。旋转锁适用于快速锁定和释放锁的情况。条件对于我们不知道等待多久的情况很有用。 –

+0

行,换句话说,线程产量? –