我目前正在开发一个跨平台的任务调度程序,但我在等待信号量时遇到sem_wait旋转问题。在Windows上,我正在使用WaitForSingleObject,它在等待时产生线程,这就是我想要的。但是sem_wait导致线程只是旋转,这是低效且不必要的。有没有办法让sem_wait产生线程而不仅仅是旋转?
由于
答案 0 :(得分:2)
您可以尝试使用condition variables而不是信号量。它们的功能并不完全相同,但根据您的使用情况,您可能可以使用它。它们的功能与Windows事件类似,因为您等待条件变量等待某些事情发生,并且您发出一个条件变量来表示发生了某些事情。
pthread_cond_wait
类似于WaitForSingleObject
,而pthread_cond_signal
类似于SetEvent
。