原子128位存储器模式选择

时间:2013-06-11 19:32:00

标签: c++ c gcc concurrency atomic

使用gcc,我的代码有一个比一个线程写入的原子128位整数,并且从31个线程同时读取。我不关心这个变量与我程序中任何其他内存同步的操作(即编译器重新排序两个写入两个不同的整数),只要这个变量的读写是一致的。我只想保证对原子128位的写入“最终”保证反映在从该变量读取的31个线程中。

使用宽松的记忆模型是否安全?我应该注意哪些问题?

1 个答案:

答案 0 :(得分:3)

轻松排序并不能保证编写器线程写入的值对任何读者线程都是可见的。

有效的行为是读者只能看到变量的初始值而没有看到任何变化。但是,保证编写器线程始终至少看到他自己对变量所做的更改(并且可能,但同样不能保证,另一个线程应用的任何后续更改)。

换句话说:您仍然在单个线程中获得顺序一致性,但不同线程之间没有任何一致性。