Если вы беспокоитесь об этих проблемах, Надежные мьютексы могут быть тем инструментом, который вы ищете:
http://pubs.opengroup.org/onlinepubs/9699919799/functions/pthread_mutexattr_setrobust.html
После темы, которой принадлежитнадежный мьютекс завершается без его разблокировки, следующий поток, который попытается заблокировать его, получит EOWNERDEAD
и станет новым владельцем.Это сигнализирует о том, что он отвечает за очистку состояния, которое защищает мьютекс, и снова маркирует его в соответствии с функцией pthread_mutex_consistent
, прежде чем разблокировать его.Разблокировка, не помечая ее как непротиворечивую, переводит мьютекс в состояние, которое невозможно восстановить.
Обратите внимание, что при использовании надежных мьютексов весь код, который блокирует мьютекс, должен знать о возможности возврата EOWNERDEAD
.