什么是平均术语“只读线程安全”任何人都可以发布一些代码示例吗?
答案 0 :(得分:2)
示例可以是一些STL容器,像这样初始化
std::vector<int> vec;
vec.push_back(1);
vec.push_back(2);
如果未修改,则访问其字段的多个线程可以使用此vec
。这是安全,而vec
的成员不会更改,也不会占用内存。
int n = vec.at(0);// good. many threads can do this
// many threads could do this too
for( std::vector<int>::const_iterator it = vec.begin(); it != vec.end(); ++it )
{
cout << *it << endl;
}
不安全但是当有人正在阅读时,其他帖子会对vec
进行一些写作/修改。
vec.push_back(3); // bad: vec could get expanded and the data relocated
vec[ 0 ] = 5; // bad: someone could read invalid data