2013-01-05 49 views
1

可能重复:
STL vector and thread-safety编写线程安全的载体

如果我有这样一段代码:

std::vector<std::vector<double>> a; 
std::vector<double> b; 

// init a,b.... 

std::vector<double> c; 
parallel_for_each (a.begin(); a.end; [&c, &b] (std::vector<double>& aux) { 
    c.push_back(foo(b, aux)); 
}); 

它是线程安全的添加元素,如在向量中?

+1

编号[填充...] –

+1

使用互斥体进行线程安全.. –

+1

@WhozCraig:我不同意它是一个完全重复的问题 - 这个问题的条件更加严格,因此需要更仔细的分析来确定线程安全(或缺乏)。这个更简单,导致更简单,更明确的答案。 –

回答

5

不,std::vector不是线程安全的。你必须提供同步。

3

parallel_for_each从哪里来?如果它来自Microsoft的并发库,则只需使用concurrent_vector。