2013-01-05 46 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。