Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Multithreading 如果posix互斥锁被解锁,而多个线程在此互斥锁上被阻止,会发生什么情况?_Multithreading_Posix - Fatal编程技术网

Multithreading 如果posix互斥锁被解锁,而多个线程在此互斥锁上被阻止,会发生什么情况?

Multithreading 如果posix互斥锁被解锁,而多个线程在此互斥锁上被阻止,会发生什么情况?,multithreading,posix,Multithreading,Posix,当thread1解锁mutex1时,哪个线程将被唤醒?它有标准规格吗 当thread1解锁mutex1时,将唤醒哪个线程 当前在互斥锁上被阻止的其他线程之一。还不清楚是哪一个 它有标准规格吗 不。不同的系统可能以不同的方式实施。(一些可能使用简单的fifo顺序来唤醒线程,另一些可能使用试探法来决定要唤醒哪个线程)。当您使用pthread\u mutex\u unlock解锁posix互斥锁时,如果多个线程正在等待互斥锁,则只有一个线程会被唤醒 各国: 如果互斥对象引用的互斥对象上有线程被阻止 调

当thread1解锁mutex1时,哪个线程将被唤醒?它有标准规格吗

当thread1解锁mutex1时,将唤醒哪个线程

当前在互斥锁上被阻止的其他线程之一。还不清楚是哪一个

它有标准规格吗


不。不同的系统可能以不同的方式实施。(一些可能使用简单的fifo顺序来唤醒线程,另一些可能使用试探法来决定要唤醒哪个线程)。

当您使用
pthread\u mutex\u unlock
解锁posix互斥锁时,如果多个线程正在等待互斥锁,则只有一个线程会被唤醒

各国:

如果互斥对象引用的互斥对象上有线程被阻止 调用pthread_mutex_unlock()时,导致互斥变为 可用时,调度策略应确定应使用哪个线程 获取互斥


用哪种语言?没有通用的响应。您希望对POSIX互斥体或C++11中本机定义的互斥体或两者都有答案吗?@Étienne POSIX互斥体,谢谢!
thread 1:
     lock mutex1
     long time operation
     unlock mutex1

thread2:
     lock mutex1
     ...

thread3:
     lock mutex1
     ...

thread4:
     lock mutex1
     ...

threadn:
     lock mutex1
     ...