pthread_cond_wait 是否将调用线程置于等待状态,以便由 pthread_cond_signal/pthread_cond_broadcast 唤醒,以便它不会轮询和搅动 CPU?
此外,sem_wait 是否将线程置于等待状态?如果我理解正确的话,互斥体获取/释放方法会使线程不断轮询互斥体,并且不会将线程置于等待状态。
最佳答案
是的,pthread_cond_wait
成功时,会导致线程等待,直到收到通知。这就是通话的目的。
sem_wait
会将线程置于等待状态如果信号量无法递减。当它处于高电平状态时,调用将立即返回。
在大多数情况下,您不必关心锁是通过忙等待还是调度程序让步来实现的。无论哪种方式,您都会获得有保证的行为,并且通常库实现者会选择您运行的平台上可用的最有效的方法。在某些情况下(当您有多个核心并且预期等待时间很短时),这就是忙等待。
关于c - pthread_cond_wait 是否将线程置于等待状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9492629/