Там нет никаких гарантий в POSIX, но так как ваш вопрос помечен линукс и NPTL ответ в этом контексте может быть дано.
Если в переменной условия нет официантов, то nptl glibc code for pthread_cond_broadcast()
просто берет блокировку низкого уровня, защищающую внутренности самой переменной условия, проверяет значение, а затем блокирует блокировку нижнего уровня. Сама блокировка самого низкого уровня использует futex, который будет вводить ядро только в том случае, если на этой блокировке есть конкуренция.
Это означает, что если не существует большого разногласия относительно самой переменной условия (то есть большое количество потоков, часто вызывающих pthread_cond_broadcast()
/pthread_cond_signal()
с той же переменной условия), системный вызов ядра не будет Накладные расходы - это всего лишь несколько заблокированных инструкций.
Как насчет того, чтобы самостоятельно измерять его с помощью профилировщика, а затем вернуться и обсудить результаты? – alk