>Есть некая глобальная переменная типа
>sig_atomit_t, и нити скопом читающие буфер. Прочитав буфер нить уменьшает значение
>этой переменной на еденичку. Идея и состоит в том, что бы
>использовать тип sig_atomic_t не применяя мутексы на эту переменную. При условии, что чтение из буфера синхронизируется какими-то другими методами -- то можно.
>"Этот вариант работает надежно, но поток В расходует слишком много процессорного времени
>во время ожидания поступления данных в очередь"
Объясняю. Тут получается, что поток А будет ждать на шаге 1, заблокировавшись например на recv(). В это время поток В постоянно выполняет холостой цикл: mutex_lock, нет новых данных, mutex_unlock, и всё заново.
>Ну а потом еще философия и автор предлагает следущую схему взаимодействия
>/* тут идёт схема с cond_wait */
Вот это верно, так как тут поток захватит мутекс именно по сигналу, то есть именно когда данные уже есть.