Как события пробуждают ожидающие потоки?
Приложения ждут одного и того же события. Теперь происходит прерывание, сообщающее, что событие произошло. Все темы просыпаются.
Но давайте предположим, что устройство представляет собой диск, который все приложения хотят записать в файл (различный для каждого потока), и они блокируют, пока их запросы на запись не будут выполнены.
Устройство прерывается, потому что запись была завершена. Может ли подпрограмма, которая была выполнена при возникновении прерывания, узнать, какой поток хотел, чтобы запись завершилась, и разбудить ее, или она активирует все потоки, которые ожидали завершения, и теперь приложение и, в конечном итоге, драйвер, который был вызван и заблокирован, могут проверить, это событие write_complete было его или нет, чтобы он мог продолжать ожидание или выполнение?