查看 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/