172 похожих чатов

Всем привет! Использую специфичную связку Dashmap<u64, Mutex<Vec<u64>> Код: https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=a3c80b99b4153f95a90fe877ee78668c (код не может быть

запущен, поскольку dashmap нет в депсах)

Задача заключается в локах юзера на его "треды", определяю по некоторому значению.
ключ — ид юзера
значение — mutex-locked вектор "активных тредов" юзера

Соответственно, когда лок с мьютекса снимается, то идёт на исполнение следующая задача юзера
Эта схема рабочая, но при высокой нагрузке иногда случается deadlock.
Подписал комментарием на 48 строчке.

Как решить этот deadlock?

7 ответов

3 просмотра

Дешмап заменить на Rwlock<HashMap<Arc<Mutex<Vec<T>>>>

Пух
Дешмап заменить на Rwlock<HashMap<Arc<Mutex<Vec<T>...

Тупо чтобы не держать лок на всю мапу постоянно

AMD-EPYC™ 9684X Автор вопроса
Пух
Тупо чтобы не держать лок на всю мапу постоянно

вот как раз это и создаёт проблемы, раньше этого не замечал, но как нагрузка выросла так и вскрылось

AMD-EPYC™ 9684X Автор вопроса
AMD EPYC™ 9684X
попробую сейчас, спасибо

Только лок отпускай после того, как вытащил аркмьютекс на юзера

AMD-EPYC™ 9684X Автор вопроса
Пух
Дешмап заменить на Rwlock<HashMap<Arc<Mutex<Vec<T>...

Пока что работает и проходит мои тесты, спасибо!

Похожие вопросы

Обсуждают сегодня

читать файл максимально быстро? странный вопрос))
zamtmn
53
тоесть, указав return eax, сгенерируется никому ненужная инструкция mov eax,eax ?
Aiwan \ (•◡•) / _bot
24
я имею в виду официально интегрированный в телегу? в том плане что не сливает переписку с пользователем?
Andrey
9
Кто-нибудь решал проблему с автоматическим скроллингом к выбранной ячейке в TDBGrid в Lazarus? Проблема в том, что есть допустим 3 столбца, третий столбец виден наполовину, вк...
Дмитрий Логинов
1
А чего сейчас в моде вместо Error для эксепшенов? А то я тут внезапно узрел что он не рекомендуется :) У Try::Tiny какой-то совершенно ужасный синтаксис если надо конкретные э...
Denis F
19
Приветствуем всех! Устали без проектов? Если вы программист и хотите получать стабильные заказы, компания Elif предлагает вам недельный курс по поиску проектов и их ведению. ...
Elif
1
а зачем этот вопрос для удаления из чата?
Mёdkinson Medvezhkin
63
Чорт! Чорт! Чорт! Стала ставить через GetIt (написано же, что ручками не рекомендуется) Сломалось на дублировании моей TSkLabel. Чтож мне ее по всем проектам переименовывать в...
Катерина Свиридова
7
Привет. Сразу скажу, что на C/C++/Rust я не пишу, но тем не менее возникла потребность дебага C/C++/Rust кода. Суть: есть серверное приложение, которое периодически ведёт себ...
ninekeem 🐳
4
всем привет! углубившись в плюсы и начав изучать реверсинг понял, что без асм'а никуда со своими высокоабстрактными представлениями начал изучать механизмы асма, и не совсем п...
9
Карта сайта