Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/139.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ seq_cst订购是否保证立即可见?_C++_Multithreading_C++11_Atomic - Fatal编程技术网

C++ seq_cst订购是否保证立即可见?

C++ seq_cst订购是否保证立即可见?,c++,multithreading,c++11,atomic,C++,Multithreading,C++11,Atomic,N3243 1.10.21表示 可以看出,正确使用互斥体和内存顺序的程序_ seq_cst防止所有数据争用且不使用其他同步操作的操作的行为与 由其组成线程执行的操作被简单地交错,每个值的计算 从该交织中该对象的最后一个副作用中提取的对象。这通常被称为“顺序一致性” 这是否意味着在原子对象上写的任何“强”> SEQARCST < P>不,C++中没有任何保证即时可见性的东西。 原子写入应该在“合理”的时间段内对其他线程可见,但它们不必是即时的,而且“合理”也没有精确的定义 保证的是内存顺序顺序c

N3243 1.10.21表示

可以看出,正确使用互斥体和内存顺序的程序_ seq_cst防止所有数据争用且不使用其他同步操作的操作的行为与 由其组成线程执行的操作被简单地交错,每个值的计算 从该交织中该对象的最后一个副作用中提取的对象。这通常被称为“顺序一致性”


这是否意味着在原子对象上写的任何“强”> SEQARCST SEQJCST <强>排序>

< P>不,C++中没有任何保证即时可见性的东西。 原子写入应该在“合理”的时间段内对其他线程可见,但它们不必是即时的,而且“合理”也没有精确的定义


保证的是
内存顺序顺序cst操作的总顺序是单一的。因此,未看到写入值的读取必须以该总顺序早于写入的顺序进行。由于此总顺序包含所有变量和所有
内存顺序
操作,因此如果线程之间存在任何通信,则写入必须很快可见

“因此,未看到写入值的读取必须以该总顺序早于写入的顺序进行“对于其他命令,这有什么不同?如果您的加载使用
memory\u order\u acquire
,那么如果两个线程都读取两个不同的变量
x
y
,那么它们可以就
x
相对于
y
的更改顺序不一致。”。对于
内存\u顺序\u seq\u cst
它们必须一致。小心。在机器翻译编程中,先到、后到或立即到的内容没有明确定义。当然,无限期拖延是一个明确的概念,拖延的时间也长得离谱。编译器应该确保这两种情况都不会发生。