gpt4 book ai didi

linux - 什么是 Mutex 获取和释放顺序?

转载 作者:太空狗 更新时间:2023-10-29 12:05:54 25 4
gpt4 key购买 nike

我知道 Mutex 的功能。但现在我对它的时机感到困惑。我特别指的是在 Linux 内核代码中。

例如,我们有 3 个线程(假设它们在同一个处理器上,并且都是具有相同优先级的普通任务)。线程 1、2 和 3 尝试获取 Mutex,但只有线程 1 获得它。线程 2 和 3 被阻塞并进入休眠状态。然后线程 1 完成了他的工作并解锁了 Mutex。

所以这是我的问题:此时此刻,会发生什么? Thread 1 会不会因为它预定的时间片没有用完而继续执行呢?还是因为是第二个线程要获取锁,所以线程2会立即获取到锁并开始执行?还是线程 3 会立即获取锁并开始执行,因为它被假定为任务调度程序的下一个运行(让我们假设这个)?会发生什么?

最佳答案

一旦线程 1 释放锁,接下来发生的事情是非确定性的。您在上面概述的任何情况都是可能的。

如果您的应用程序需要线程之间的特定顺序,那么您可能希望尝试让线程之间更明确地进行通信。在 C 语言中,您可以使用 pipe() 执行此操作。

但一般来说,如果您接受困惑并让调度程序选择,则性能最好。

关于linux - 什么是 Mutex 获取和释放顺序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12784182/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com