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

Можно ли использовать std::timed_mutex вместо std::mutex как возможность обойти возникший

deadlock? Какая правильная семантика использования std::timed_mutex?

18 ответов

15 просмотров

Если это мьютекс с тайм-аут, то можно, и нужно, а использовать - задать тайм-аут

Семантика отличается только тем, что надо проверять, был ли тайм-аут, а что делать - это уже логика приложения

Ilya Zviagin
Если это мьютекс с тайм-аут, то можно, и нужно, а ...

По отношению к deadlock-ам есть какие то мысли?

дедлок обходится https://en.cppreference.com/w/cpp/thread/lock

^

Ilya Zviagin
В смысле? Что детально надо?

Получить оценку идеи использования std::timed_mutex как страховки от deadlock. Если try_lock_for вернул false, то mutex занят другим потоком слишком долго. Если mutex занят слишком долго, а операции под ним должны были быть очень быстрыми, то скорее всего это deadlock. В этом случае можно зафейлить операцию нуждавшуюся в mutex и попробовать попозже. Главное, что мы не зависнем на веки вечные. Я где-то ошибаюсь?

Александр Сергеевич Лизин
Получить оценку идеи использования std::timed_mute...

ты читаешь, что тебе пишут? lock решает проблему дедлока на корню. какую проблему ты сейчас решаешь, если решение уже есть?

Anatoly Shirokov
ты читаешь, что тебе пишут? lock решает проблему д...

Читаю. Я в курсе std::lock. Жду ответ по timed_mutex

Александр Сергеевич Лизин
Читаю. Я в курсе std::lock. Жду ответ по timed_mut...

проблема с timed_mutex в том, что он может не угадать таймаут

Ilya Zviagin
Это —хорошая идея.

единственный вопрос - зачем ее решать эту проблему, если она решена с помощью других средств?

Александр Сергеевич Лизин
Получить оценку идеи использования std::timed_mute...

Нет, нигде не ошибаешься, кроме того, что "это дедлок" — это потенциально может быть дедлок.

Anatoly Shirokov
единственный вопрос - зачем ее решать эту проблему...

Толь, не везде можно получить список всех мьютексов ...

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

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

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
в JclConsole объявлено так: function CtrlHandler(CtrlType: DWORD): BOOL; stdcall; - где ваше объявление с stdcall? у вас на картинке нет stdcall
Karagy
8
Ребят в СИ можно реализовать ООП?
Николай
33
Вот еще странный косяк, подскажите как бороться. Я git clone сделал себе всего embassy и примеры там запускаю. Всё хорошо. Но вот решил в cargo.toml зависимости не как в приме...
Lukutin R2AJP
2
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
Карта сайта