【发布时间】:2021-07-06 02:50:48
【问题描述】:
我知道原子变量是无锁的!!
它不会锁定线程,但我有一个问题..
像 std::atomic::fetch_add 这样的 Read-Modify-Store 操作也是原子执行的???
我认为这个操作不仅仅是一条指令。
它需要多个周期......所以如果我不锁定内存总线(实际上我不知道互斥锁是否包含内存总线锁),其他线程可以在读取和存储之间进行内存操作。
所以我认为即使原子变量也需要锁定......
我知道吗???
【问题讨论】:
-
"...我知道原子变量是无锁的!!..." 并非总是如此 - en.cppreference.com/w/cpp/atomic/atomic/is_lock_free
-
除上述评论外,据我所知,
std::atomic_flag是唯一保证无锁的原子类型。
标签: c++ multithreading atomic