Код: Выделить всё
std::unordered_mapid()), std::atomic> visited;
#pragma omp parallel
{
#pragma omp for
for ...
#pragma omp critical
{
if (visited.find(next->id()) == visited.end()) {
next_frontier.push_back(next);
visited.emplace(next->id(), true);
}
}
}
}
if (std::atomic_compare_exchange_weak(&visited[next->id()], &expected, true)) {
#pragma omp critical
next_frontier.push_back(next);
}
< /code>
Но я получаю: < /p>
malloc (): несортированный двойной список поврежденных < /li>
двойной свободный или коррупция (out) < /li>
ошибка сегментации < /li>
< /ul>
Подробнее здесь: https://stackoverflow.com/questions/720 ... eak-in-bfs
Мобильная версия