Question


it is known that operator [] is not concurrently safe for writing: concurrent_vector::operator[] Operator But what if I guarantee that different threads will write to different vector positions. Like this (very much simplified example):

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

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

Is it concurrently safe or not? And if 'not' then why?

Thanks

Était-ce utile?

La solution

Yes, it is concurrently safe as it's like if you are accessing different variables.

As ildjam pointed out in the comment that would be safe even with regular std::vector or, let me add, with simple arrays.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top