我有一个写入原子变量的线程。 (使用memory_order_release)。 主题A
还有许多其他线程从该变量中读取。 (使用memory_order_acquire)。 主题B 。
在线程A中,使用memory_order_relaxed读取该变量是否安全?
答案 0 :(得分:9)
是的,它在某种意义上是安全的,它的行为与由单个线程操纵的非原子变量相同。
例如,如果写入版本在之前按顺序放松读取程序顺序,并且没有其他写入该变量,那么放宽读取将看到写入写入的值-release(N3337§1.10.12-13)。
答案 1 :(得分:5)
是的,当在线程A中读取变量时,使用memory_order_relaxed
就足够了。这个读取将始终在发生 - 与关系之前写入,发生在同一个线程中,因为程序顺序。