pthreads:唤醒线程是否具有重新进入关键部分的优先级

时间:2019-02-27 09:56:53

标签: pthreads locking

我在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
}

1 个答案:

答案 0 :(得分:1)

否,锁定互斥锁时,唤醒的线程不会获得任何特殊的优先级。在您的示例中,线程2 确实有可能在线程1 成功获得锁并从pthread_cond_wait()返回之前进行了多次旋转。