安全

2012-03-19 68 views
2


众所周知,运营商[]是不是写同时安全: concurrent_vector::operator[] Operator 但是,如果我保证,不同的线程会写入不同的向量位置是什么。 这样的(非常简化的例子):安全

concurrent_vector<double> vec; 
vec.resize(100); 

parallel_for(0, 100, [&] (double ind) 
{ 
    vec[ind] = ind*ind; 
} 

它是同时安全与否?如果'不',那么为什么?

谢谢

+5

_That_将是安全的,即使与普通的旧'的std ::向量<>'。你遇到什么问题来提示这个问题? – ildjarn 2012-03-19 21:08:02

回答

2

是的,它是同时安全的,因为它就像如果你正在访问不同的变量。

由于ildjam的评论,这将是安全的,即使与普通std::vector或者,让我补充,用简单数组指出。

+0

谢谢你,伙计们。

我只是想检查任我理解正确的方式。 – IgorStack 2012-03-19 21:34:51