2011-04-10 86 views
1

我目前正在研究一個跨平臺的任務調度器,但是我在等待信號量時遇到了sem_wait旋轉的問題。在Windows上,我使用WaitForSingleObject,它在等待時產生線程,這正是我想要的。但sem_wait會導致線程旋轉,這是無效率和不必要的。有沒有辦法讓sem_wait產生線程而不是旋轉?有沒有辦法使sem_wait不旋轉?

感謝

回答

2

你可以嘗試使用condition variables,而不是信號量。它們在功能上並不完全相同,但取決於您的使用情況,您可能可以使用。它們的功能類似於Windows事件,因爲您等待條件變量等待發生某些事件,併發出一個條件變量來指示發生了什麼事情。

pthread_cond_wait類似於WaitForSingleObject,並且pthread_cond_signal類似於SetEvent

+0

太棒了,那正是我在找的東西。謝謝! – Kyle 2011-04-10 07:51:34