@Sh0ttky

Есть ли в stl такой мьютекс, который можно разблокировать из другого потока?

std:mutex бросает исключение, если пытаться разблокировать его из другого потока.
  • Вопрос задан
  • 180 просмотров
Решения вопроса 1
@MarkusD Куратор тега C++
все время мелю чепуху :)
Если тебе надо заблокировать один поток (или несколько, поставив их в очередь блокировки) до события в другом потоке, то тебе хорошо подойдет std::condition_variable.

На основе этой сущности можно реализовать механику "wait() -> notify/notifyall()" из pthread_monitor или из Java.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
tsarevfs
@tsarevfs Куратор тега C++
C++ developer
Вариант решения -- попросить поток, который заблокировал мьютекс, разблокировать его. Сделать это можно например с помощью флага, значение которого периодически проверяет первый поток.
Ну а так, желательно не иметь долгих блокировок. Блокировки стоит использовать только для обращения к общим данных.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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