юзается в разных функциях.
Все обращения к мапе находятся под мютексами.
Имеется кусочек кода:
std::unique_lock<std::mutex> lock(mutex);
auto it = users.find(id);
if (it != std::end(users)) {
users.erase(id);
Вот периодически на вызове эрейс виснет приложение. Визуально выглядит как дедлок, но ведь лочимся мы раньше, и виснуть тогда должны были тоже раньше.
Причем, при каком-нить insert, например, все ок.
Есть какие-то идеи? Даже самые бредовые
а зачем удалять по ключу, если итератор уже есть
Запусти под тред санитайзером
Можешь выложить кусок кодяры, где ошибка точно бы воспроизводилась?
у меня был дедлок, когда я при итерации по мапе удалил из неё
идея код показать полностью
Обсуждают сегодня