Мне было интересно, каково преимущество в производительности от использования условных переменных по сравнению с мьютекс-блокировками в pthreads.
Я нашел следующее: "Без условных переменных у программиста должны быть постоянные опросы потоков (возможно, в критической секции), чтобы проверить, выполняется ли условие. Это может потребовать очень много ресурсов, так как поток будет постоянно занят этим. деятельность. Переменная условия - это способ достижения той же цели без опроса. " (https://computing.llnl.gov/tutorials/pthreads)
Но также кажется, что вызовы мьютекса блокируются (в отличие от спин-блокировок). Следовательно, если поток (T1) не может получить блокировку, потому что какой-то другой поток (T2) имеет блокировку, T1 переводится в спящий режим ОС и просыпается только тогда, когда T2 снимает блокировку, а ОС предоставляет T1 блокировку. Поток T1 на самом деле не опрашивает, чтобы получить блокировку. Из этого описания кажется, что использование переменных условий не дает выигрыша в производительности. В любом случае опрос не проводится. В любом случае ОС предоставляет преимущество, которое может дать парадигма условной переменной.
Можете ли вы объяснить, что на самом деле происходит.