pthreads:唤醒线程是否有重新进入临界区的优先权
pthreads: do awaken threads have priority of reentering the critical section
我在 pthread_cond_broadcast
的文档中阅读了以下内容:
The thread(s) that are unblocked shall contend for the mutex according
to the scheduling policy (if applicable), and as if each had called
pthread_mutex_lock().
这提出了一个问题:在重新获取互斥锁时,被唤醒的线程是否没有优先于任何其他线程?在下面的例子中,这意味着,线程 2 可能自旋两次,调用 signal
两次,即使同时线程 1,即使被信号唤醒,甚至没有重新获取锁一次,只是在 pthread_mutex_lock()
上等待,在对 wait()
的调用中的某处,就像任何其他线程一样?
线程 1:
while(1) {
lock
wait
unlock
}
线程 2:
while(1) {
lock
signal
unlock
}
不,被唤醒的线程在锁定互斥量时不会获得任何特殊优先级。 thread 2确实有可能在thread 1能够成功获取锁和return之前旋转多次来自 pthread_cond_wait()
.
我在 pthread_cond_broadcast
的文档中阅读了以下内容:
The thread(s) that are unblocked shall contend for the mutex according to the scheduling policy (if applicable), and as if each had called pthread_mutex_lock().
这提出了一个问题:在重新获取互斥锁时,被唤醒的线程是否没有优先于任何其他线程?在下面的例子中,这意味着,线程 2 可能自旋两次,调用 signal
两次,即使同时线程 1,即使被信号唤醒,甚至没有重新获取锁一次,只是在 pthread_mutex_lock()
上等待,在对 wait()
的调用中的某处,就像任何其他线程一样?
线程 1:
while(1) {
lock
wait
unlock
}
线程 2:
while(1) {
lock
signal
unlock
}
不,被唤醒的线程在锁定互斥量时不会获得任何特殊优先级。 thread 2确实有可能在thread 1能够成功获取锁和return之前旋转多次来自 pthread_cond_wait()
.