thread 1:
lock mutex1
long time operation
unlock mutex1
thread2:
lock mutex1
...
thread3:
lock mutex1
...
thread4:
lock mutex1
...
threadn:
lock mutex1
...
当thread1解锁mutex1时,哪个线程会被唤醒?它有标准规格吗?
答案 0 :(得分:2)
使用pthread_mutex_unlock
解锁posix互斥锁时,如果多个线程正在等待互斥锁,则只会唤醒其中一个。
如果在互斥锁引用的互斥锁对象上阻塞了线程 当调用pthread_mutex_unlock()时,导致互斥锁变为 可用,调度策略应确定哪个线程 获得互斥锁。
答案 1 :(得分:1)
当thread1解锁mutex1时,哪个线程会被唤醒?
当前在互斥锁上阻止的其他线程之一。它没有具体说明。
是否有标准规格?
没有。不同的系统可以以不同的方式实现它。 (有些人可能会使用简单的fifo命令来唤醒线程,其他人可能会使用启发式方法来决定唤醒哪个线程。)