deadlock? Какая правильная семантика использования std::timed_mutex?
Если это мьютекс с тайм-аут, то можно, и нужно, а использовать - задать тайм-аут
Семантика отличается только тем, что надо проверять, был ли тайм-аут, а что делать - это уже логика приложения
По отношению к deadlock-ам есть какие то мысли?
В смысле? Что детально надо?
дедлок обходится https://en.cppreference.com/w/cpp/thread/lock
Получить оценку идеи использования std::timed_mutex как страховки от deadlock. Если try_lock_for вернул false, то mutex занят другим потоком слишком долго. Если mutex занят слишком долго, а операции под ним должны были быть очень быстрыми, то скорее всего это deadlock. В этом случае можно зафейлить операцию нуждавшуюся в mutex и попробовать попозже. Главное, что мы не зависнем на веки вечные. Я где-то ошибаюсь?
ты читаешь, что тебе пишут? lock решает проблему дедлока на корню. какую проблему ты сейчас решаешь, если решение уже есть?
Читаю. Я в курсе std::lock. Жду ответ по timed_mutex
проблема с timed_mutex в том, что он может не угадать таймаут
в каком смысле "не угадать"?
единственный вопрос - зачем ее решать эту проблему, если она решена с помощью других средств?
Нет, нигде не ошибаешься, кроме того, что "это дедлок" — это потенциально может быть дедлок.
Толь, не везде можно получить список всех мьютексов ...
В том, что может быть мало таймаута
Обсуждают сегодня