1
我目前正在研究一个跨平台的任务调度器,但是我在等待信号量时遇到了sem_wait旋转的问题。在Windows上,我使用WaitForSingleObject,它在等待时产生线程,这正是我想要的。但sem_wait会导致线程旋转,这是无效率和不必要的。有没有办法让sem_wait产生线程而不是旋转?有没有办法使sem_wait不旋转?
感谢
我目前正在研究一个跨平台的任务调度器,但是我在等待信号量时遇到了sem_wait旋转的问题。在Windows上,我使用WaitForSingleObject,它在等待时产生线程,这正是我想要的。但sem_wait会导致线程旋转,这是无效率和不必要的。有没有办法让sem_wait产生线程而不是旋转?有没有办法使sem_wait不旋转?
感谢
你可以尝试使用condition variables,而不是信号量。它们在功能上并不完全相同,但取决于您的使用情况,您可能可以使用。它们的功能类似于Windows事件,因为您等待条件变量等待发生某些事件,并发出一个条件变量来指示发生了什么事情。
pthread_cond_wait
类似于WaitForSingleObject
,并且pthread_cond_signal
类似于SetEvent
。
太棒了,那正是我在找的东西。谢谢! – Kyle 2011-04-10 07:51:34