1
什麼是平均值「只讀線程安全」任何人都可以發佈一些代碼示例?只讀線程安全
什麼是平均值「只讀線程安全」任何人都可以發佈一些代碼示例?只讀線程安全
的例子可以是一些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
很好的答案。應該指出的是,在vector上並行迭代是特別安全的 - 如果vector中只有一個迭代指針,它不會是隻讀的線程安全的,以執行上面的循環。 – 2010-10-29 11:24:20