2011-08-10 80 views

回答

2

線程確實屈服。這個收益是由於執行pthread_cond_waitPyThread_acquire_lock中的等效掛起機制。由於條件變量是使用系統調用接口實現的,並且Python使用本地線程,操作系統調度程序負責切換到另一個線程。

此外,GIL is released之前調用這個深入Python的內部。最後,最後一塊難題是獲取threading.Condition.wait鎖的電話。

1

等待()方法釋放鎖,然後阻塞,直到它是 通過通知()或notifyAll的()調用在另一個線程相同的條件下 變量喚醒。一旦被喚醒,它將重新獲得鎖定並返回 。也可以指定超時。

它阻塞,直到通知條件。

+0

相信與否我實際上是先試着閱讀手冊。如果它「阻止」執行,爲什麼我不應該使用自旋鎖? –

+0

等待在自旋鎖上的線程會燒燬cpu,而等待條件的線程不會燒燬cpu。旋轉鎖適用於快速鎖定和釋放鎖的情況。條件對於我們不知道等待多久的情況很有用。 –

+0

行,換句話說,線程產量? –