Согласно POSIX,
должно быть безопасно уничтожить инициализированную переменную условия, при которой в настоящее время не заблокированы ни один поток.
Кроме того, операции сигнала и широковещательной передачи указываются для разблокировки одного / всех потоков, заблокированных в переменной условия.
Таким образом, мне кажется, что следующие формы самосинхронизированного уничтожения должны быть допустимы, т.е. вызов pthread_cond_destroy
:
Конечно, это предполагает, что больше не прибудут ожидающие и никакие дальнейшие сигналы после этого не будут выполняться, за что отвечает приложение при использовании pthread_cond_destroy
.
Правильно ли я, что разрушение допустимо в этих ситуациях? И существуют ли другие сценарии самосинхронизированного уничтожения, о которых следует знать с переменными состояния?
Наконец, для разделяемых процессами условных переменных, где отключение общего сопоставления без разрушения может иметь смысл, разумно ли ожидать, что отключение будет действительным в Уничтожение одних и тех же контекстов будет допустимым или должна быть выполнена дальнейшая синхронизация, если несколько потоков в одном процессе (адресном пространстве) используют одно и то же отображение и хотят отменить его отображение в одном из вышеуказанных контекстов?