我在pthread_cond_broadcast
的文档中阅读了以下内容:
未阻塞的线程应根据以下内容争用互斥量 计划策略(如果适用),并且好像每个人都已经 pthread_mutex_lock()。
这引起了一个问题:被唤醒的线程在重新获取互斥锁时是否没有任何其他线程优先?在下面的示例中,这意味着线程2可能旋转两次,调用signal
两次,即使在同一时间线程1,即使被信号唤醒,也没有重新获得锁一次,只是像其他线程一样,在pthread_mutex_lock()
调用中的某个地方等待wait()
吗?
线程1:
while(1) {
lock
wait
unlock
}
线程2:
while(1) {
lock
signal
unlock
}
答案 0 :(得分:1)
否,锁定互斥锁时,唤醒的线程不会获得任何特殊的优先级。在您的示例中,线程2 确实有可能在线程1 成功获得锁并从pthread_cond_wait()
返回之前进行了多次旋转。>