Reputation: 869
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
Upvotes: 2
Views: 633
Reputation: 10864
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.
Upvotes: 2