我知道 Mutex 的功能。但现在我对它的时机感到困惑。我特别指的是 Linux 内核代码。
例如,我们有 3 个线程(假设它们在同一个处理器上,并且都是具有相同优先级的普通任务)。线程 1 ,2 和 3 尝试获取 Mutex,只有线程 1 得到它。线程 2 和 3 被阻塞并进入睡眠状态。然后线程 1 完成了他的工作并解锁了互斥锁。
所以这是我的问题:此时此刻,会发生什么?线程 1 会因为它的预定时间片没有用完而继续执行吗?还是线程 2 会立即获取锁并开始执行,因为它是第二个想要获取锁的线程?或者线程 3 会立即获取锁并开始执行,因为它被假定从任务调度程序中运行(假设这个)?会发生什么?