2011-04-10 87 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