dvs*_*s23 5 c++ concurrency vector atomic
我有一个std::vector<std::atomic<size_t>>vec.vec[index].fetch_add(1, std::memory_order_release)在多个并发线程上运行或存储/加载是否安全?我认为它应该是,因为读取是线程安全的,并且由于原子的原因,从多个线程同时写入一个条目是不可能的 - 是吗?
通常,它不是线程安全的,因为容器本身不是原子的.
也就是说,只要你不改变向量中的内容(即做任何使返回无效的东西data()),你就没事了.
可悲的是,你不能诉诸于std::atomic<std::vector<...>>一个std::vector不可轻易复制的东西.
| 归档时间: |
|
| 查看次数: |
572 次 |
| 最近记录: |