C++:Boost::mutex在同一范围内单独锁定多个变量

标签 c++ multithreading boost

我是多线程的新手,正在尝试使用互斥体。我很确定我了解什么是互斥体的概念,但是我发现关于实际使用它们的文档非常缺乏。我遇到的主要问题之一是试图控制对特定变量的访问。

当我锁定一个互斥体时究竟会发生什么(无论我使用哪种锁)?似乎没有任何方法可以将特定变量/资源分配给互斥量,那么它只是将所有变量锁定在范围内吗?如果我有变量 A 和变量 B 都声明在我想单独互斥的同一范围内怎么办(即线程 1 可以访问变量 A 当线程 2 访问变量 B)?

最佳答案

Mutex 锁定对其保护的每个作用域的访问,它不会锁定变量本身。

如果你想保护单个变量,用 std::atomic<T> 包裹它或 boost::atomic<T> 分别,或为每个专用互斥体。

关于C++:Boost::mutex在同一范围内单独锁定多个变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25572710/

相关文章:

c++ - 取消时可以将 boost::asio::yield_context 用作 deadline_timer 处理程序吗?

python - PyQt:使用线程访问对象

c++ - 如何在指针 vector 之间动态转换?

windows - 在 Windows : substitute for Boost Pro? 上安装 Boost > 1.51

c++ - 将 Boost Spirit 递归匹配结果保存到 C++ 结构

javascript - 如何使用集群增加 NodeJS 服务器的吞吐量?

c - Windows 互斥体 WAIT_OBJECT_0 和 WAIT_ABANDONED

c++ - 为什么不能使用 '=' 运算符将数组变量直接分配给另一个数组变量?

C++ 对数组位置使用 bool 值评估(跳转表)

java - 如何用C、C++、Java等语言动态生成HTML?