我基本上有两个问题是密切相关的,它们都是基于这样的问题:使用c++ std::原子变量的线程同步问题
正如cppreference.com所解释的:
对于memory_order_acquire: 具有此内存顺序的load操作对受影响的内存位置执行获取操作:在此加载之前,不能对当前线程中的任何读或写进行重新排序。在释放相同原子变量的其他线程中都可以在当前线程中看到。 对于memory_order_release:具有此内存顺序的存储操作执行发布操作:在此存储之后,不能对当前线程中的任何读或写进行重新排序。在当前线程中的所有写入在获得相同原子变量的其他线程中都是可见的。
我做作业的方法是阅读所有可用的文档,例如查询/搜索、搜索等等.但是,我还是不能理解一些事情。
发布于 2022-11-14 13:31:19
链接的问题有两个原子变量,您的“cp偏好”引号特别提到“相同的原子变量”。这就是为什么参考文本没有包含链接的问题。
进一步引用cp偏好:memory_order_seq_cst:"...a单总顺序存在,所有线程都以相同的顺序观察的所有修改“。
因此,完成了对两个原子变量的修改。
从本质上讲,memory_order_release的设计问题在于它是GOTO的数据等价物,我们知道这是自Dijkstra以来的一个问题。memory_order_acquire相当于COMEFROM,通常是为愚人节预留的。我还不确定它们是否是C++的好补充。
https://stackoverflow.com/questions/74429465
复制相似问题