Как решить состояние гонки в OpenMP?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Как решить состояние гонки в OpenMP?

Сообщение Anonymous »


bool ClusterExists(std::string& infoSet) { bool существует {ложь}; #pragma omp критично существует = mInfoMap.find(infoSet) != mInfoMap.end(); возврат существует; } InfoSet* get(std::string& infoSet, const int& numActs, Env::History& action) { if (numActs > 0 && mCreateNotExists && !clusterExists(infoSet)) { #pragma omp критично { mInfoMap.insert({infoSet, новый InfoSet {numActs}}); for (auto& a : действия) { mInfoMap[infoSet]->insertActStr(Env::ActToStr(std::get(a)), std::get(a)); } } } вернуть mInfoMap[infoSet]; } Я считаю, что проблема во «вставке». Проблема в том, что карта является «контейнером STL» и ей нужна блокировка?
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»