запущен, поскольку dashmap нет в депсах)
Задача заключается в локах юзера на его "треды", определяю по некоторому значению.
ключ — ид юзера
значение — mutex-locked вектор "активных тредов" юзера
Соответственно, когда лок с мьютекса снимается, то идёт на исполнение следующая задача юзера
Эта схема рабочая, но при высокой нагрузке иногда случается deadlock.
Подписал комментарием на 48 строчке.
Как решить этот deadlock?
Дешмап заменить на Rwlock<HashMap<Arc<Mutex<Vec<T>>>>
Тупо чтобы не держать лок на всю мапу постоянно
вот как раз это и создаёт проблемы, раньше этого не замечал, но как нагрузка выросла так и вскрылось
попробую сейчас, спасибо
Только лок отпускай после того, как вытащил аркмьютекс на юзера
Пока что работает и проходит мои тесты, спасибо!
Обсуждают сегодня