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 次 |
最近记录: |