只读线程安全

时间:2010-10-29 09:26:29

标签: multithreading concurrency

什么是平均术语“只读线程安全”任何人都可以发布一些代码示例吗?

1 个答案:

答案 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