我是多线程的新手,正在尝试使用互斥体。我很确定我了解什么是互斥体的概念,但是我发现关于实际使用它们的文档非常缺乏。我遇到的主要问题之一是试图控制对特定变量的访问。
当我锁定一个互斥体时究竟会发生什么(无论我使用哪种锁)?似乎没有任何方法可以将特定变量/资源分配给互斥量,那么它只是将所有变量锁定在范围内吗?如果我有变量 A
和变量 B
都声明在我想单独互斥的同一范围内怎么办(即线程 1 可以访问变量 A
当线程 2 访问变量 B
)?
最佳答案
Mutex 锁定对其保护的每个作用域的访问,它不会锁定变量本身。
如果你想保护单个变量,用 std::atomic<T>
包裹它或 boost::atomic<T>
分别,或为每个专用互斥体。
关于C++:Boost::mutex在同一范围内单独锁定多个变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25572710/