C++ 当在唯一写入原子变量的线程中时,使用内存\u顺序\u松弛加载原子变量是否安全?

C++ 当在唯一写入原子变量的线程中时,使用内存\u顺序\u松弛加载原子变量是否安全?,c++,multithreading,c++11,thread-safety,C++,Multithreading,C++11,Thread Safety,我有一个线程可以写入一个原子变量。(使用内存\顺序\释放)线程A 还有许多其他线程从该变量读取数据。(使用存储器顺序获取)线程B 当在线程A中读取变量时,在内存顺序松弛的情况下读取该变量是否安全?是的,当在线程A中读取变量时,使用内存顺序松弛的就足够了。由于程序顺序的原因,该读取总是在与写入相关的事件发生之前发生。是,在线程A中读取变量时,使用内存\u顺序\u松弛就足够了。由于程序顺序的原因,该读取总是在与写入相关之前发生,发生在同一线程中。是的,它的安全性在于,它的行为与由单个线程操纵的非原子

我有一个线程可以写入一个原子变量。(使用内存\顺序\释放)线程A

还有许多其他线程从该变量读取数据。(使用存储器顺序获取)线程B


当在线程A中读取变量时,在内存顺序松弛的情况下读取该变量是否安全?

是的,当在线程A中读取变量时,使用
内存顺序松弛的
就足够了。由于程序顺序的原因,该读取总是在与写入相关的事件发生之前发生。

是,在线程A中读取变量时,使用
内存\u顺序\u松弛
就足够了。由于程序顺序的原因,该读取总是在与写入相关之前发生,发生在同一线程中。

是的,它的安全性在于,它的行为与由单个线程操纵的非原子变量相同


例如,如果写入释放在程序顺序中的松弛读取之前排序,并且没有其他写入该变量,则松弛读取将看到写入释放写入的值(§1.10.12-13)。

是,它的安全性在于,它的行为与由单个线程操纵的非原子变量相同


例如,如果写释放在程序顺序中的松弛读取之前排序,并且没有对该变量的其他写入,那么松弛读取将看到写释放写入的值(§1.10.12-13)。

无法使用给定的信息进行回答。我们不知道您需要原子变量具有什么语义。例如,线程A是否先写入其他内存,然后再写入原子变量,您需要确保看到写入原子变量的其他线程看到之前的写入?还是不?没有办法用给出的信息来回答。我们不知道您需要原子变量具有什么语义。例如,线程A是否先写入其他内存,然后再写入原子变量,您需要确保看到写入原子变量的其他线程看到之前的写入?还是不?