Переменные состояния используются, чтобы атомарно блокировать потоки,
пока не наступит специфическое состояние. Переменные состояния всегда
используются в сочетании с блокировками мьютексов:
Состояние проверяется под защитой мьютекса. Если условие ложно, поток
обычно блокируется на переменной состояния и атомарно освобожает мьютекс,
ожидающий изменения состояния.
Если другой поток изменяет состояние, он сигнализирует связанной переменной
состояния, чтобы пробудить один или несколько ожидающих потоков, снова
захватить мьютекс, и перепроверить условие.
Переменные состояния могут использоваться для синхронизации потоков
между процессами, если они размещены в памяти, которая доступна сотрудничающим
процессам. Дсциплина планирования определяет порядок пробуждения блокированных
потоков. Для значения по умолчанию SCHED_OTHER потоки пробуждаются
в порядке приоритетов. Атрибуты переменных состояния должны быть установлены
и инициализированы прежде, чем переменные состояния будут использоваться.