Например:
- поток A вызывает wait_event(wq,blocking_condition ) -> поток A добавляется в очередь wq, затем оценивается Blocking_condition, который блокируется, скажем, мьютексом. На этом этапе поток A блокируется в двух местах.
- thead B вызывает Wake_up(wq)
- поток A просыпается и продолжает работу , хотя он все равно должен ожидать этот мьютекс.
Подробнее здесь: https://stackoverflow.com/questions/790 ... heck-block