2012-03-19 3 views
2


известно, что оператор [] не является одновременно безопасным для записи: concurrent_vector::operator[] Operator Но что, если я гарантирую, что разные потоки будут писать в различные векторных позиции. Как это (очень упрощенный пример):Безопасность concurrent_vector

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

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

ли одновременно безопасно или нет? А если «нет», то почему?

Thanks

+5

_That_ был бы безопасен даже при использовании обычного старого 'std :: vector <>'. Какую проблему вы испытываете, чтобы задать этот вопрос? – ildjarn

ответ

2

Да, это одновременно безопасно, так как это похоже на доступ к различным переменным.

Как ildjam указал в комментарии, что было бы безопасно даже с обычным std::vector или, позвольте мне добавить, с простыми массивами.

+0

Спасибо, ребята.

Я просто хотел проверить, правильно ли я понимаю. – IgorStack