【发布时间】:2021-03-24 02:00:15
【问题描述】:
我了解到释放序列的目的是使一个线程中的写入操作与其他线程中的许多读取操作同步。
但是看了下面的两个参考资料后,我仍然无法理解一些细节。
- 由执行 A 的同一线程执行的写入 (C++20 前)
- 任何线程对 M 进行的原子读-修改-写操作
1.Dose "Writes executed by the same thread" 意思如下?
void foo()
{
count.store(release)
....
count.store(release)
}
为什么要强调写操作在同一个线程中?为什么只强调写入(而非读取)操作?
2.其他线程中的操作是否必须像 atomic::fetch_sub 一样 RMW ?能不能像 atomic::load 这样的普通读操作?
【问题讨论】:
-
您要确保
queue_data的更改在新count之前(或至少同时)对其他线程可见。这就是为什么在线程中排序很重要。
标签: c++ multithreading c++11 atomic