Multithreading 只读线程安全

Multithreading 只读线程安全,multithreading,concurrency,Multithreading,Concurrency,“只读线程安全”一词的含义是什么?任何人都可以发布一些代码示例吗?示例可以是一些STL容器,初始化如下 std::vector<int> vec; vec.push_back(1); vec.push_back(2); 如果其他线程在有人阅读时对vec进行写入/修改,则不安全 vec.push_back(3); // bad: vec could get expanded and the data relocated vec[ 0 ] = 5; // bad: someone co

“只读线程安全”一词的含义是什么?任何人都可以发布一些代码示例吗?

示例可以是一些STL容器,初始化如下

std::vector<int> vec;
vec.push_back(1);
vec.push_back(2);
如果其他线程在有人阅读时对
vec
进行写入/修改,则不安全

vec.push_back(3); // bad: vec could get expanded and the data relocated
vec[ 0 ] = 5; // bad: someone could read invalid data

回答得好。应该注意的是,在向量上并行迭代是特别安全的——如果向量中只有一个迭代指针,那么执行上述循环就不是只读线程安全的。
vec.push_back(3); // bad: vec could get expanded and the data relocated
vec[ 0 ] = 5; // bad: someone could read invalid data