c++ - std::unique_lock::_Owns 数据成员不是原子的?

标签 c++

查看 MSVC14 中的 std::unique_lock 实现,我注意到它有一个数据成员

bool _Owns;

由于 _Owns 由operator=、operator() 和 owns_lock() 等使用,所以我期望 _Owns 是原子的。任何人都可以评论为什么不是?

谢谢。

最佳答案

std::unique_lock 对象不能被多个线程访问(这完全违背了它的目的),因此它不需要考虑存储在其本身的数据的原子性。

锁对象有一个对互斥体对象的引用(例如,std::mutex),它调用成员函数来锁定或解锁拥有该锁对象的线程的互斥体。该互斥对象是线程之间共享的对象。

关于c++ - std::unique_lock::_Owns 数据成员不是原子的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73979892/

相关文章:

c++ - 为二维数组的动态分配获取奇怪的输出。我该如何解决这个问题?

c++ - 如何在 MFC View 上显示 OpenCV Mat

c++ - 段错误 - C 编程

c++ - 如何向列表添加值<shared_ptr<Abstract>>

c# - 在C#项目中使用C++ DLL

c++ - 在多线程应用程序中等待变量的最佳方法是什么

c++ - 返回静态变量的成员函数

c++ - 使用 inotify 监控文件

c++ - 在 docker 容器中运行 Qt GUI

c++ - Ubuntu 上 Jupyter 的 Cling 内核