1

我目前正在开发一个跨平台的任务调度程序,但是我在等待信号量时遇到了 sem_wait 旋转的问题。在 Windows 上,我使用的是 WaitForSingleObject,它在等待时产生线程,这正是我想要的。但是 sem_wait 导致线程只是旋转,这是低效且不必要的。有没有办法让 sem_wait 产生线程而不是仅仅旋转?

谢谢

4

1 回答 1

2

您可以尝试使用条件变量而不是信号量。它们在功能上并不完全相同,但根据您的使用情况,您也许可以改用。它们的功能类似于 Windows 事件,因为您等待条件变量以等待某事发生,并且您向条件变量发出信号以指示某事已发生。

pthread_cond_wait类似于WaitForSingleObjectpthread_cond_signal类似于SetEvent

于 2011-04-10T03:19:22.803 回答