Очереди ожидания ядра Linux: может ли блокироваться проверка условий?Linux

Anonymous
Очереди ожидания ядра Linux: может ли блокироваться проверка условий?

Сообщение Anonymous »

Я понимаю, что в очередях ожидания ядра Linux выражение условия оценивается после того, как текущий поток ставится в очередь в списке ожидающих. Но что произойдет, если выражение условия включает блокировку?
Например:
  • поток A вызывает wait_event(wq,blocking_condition ) -> поток A добавляется в очередь wq, затем оценивается Blocking_condition, который блокируется, скажем, мьютексом. На этом этапе поток A блокируется в двух местах.
  • thead B вызывает Wake_up(wq)
  • поток A просыпается и продолжает работу , хотя он все равно должен ожидать этот мьютекс.
Применяется ли здесь какая-то специальная обработка (т. е. все блокирующие примитивы в ядре могут обрабатывать ложные пробуждения) или это чистое издевательство?

Подробнее здесь: https://stackoverflow.com/questions/790 ... heck-block

Вернуться в «Linux»