Как реализовано программирование, ориентированное на событие?

StackOverflow https://stackoverflow.com/questions/4046994

Вопрос

Я смотрел на то, как работают скрученные и узлы.

Я понимаю, что это хорошо, потому что нам нужны меньше потоков, потому что нам не нужно заблокировать потоки, ожидающие операции ввода-вывода. Но что-то должно вызывать обратный вызов после завершения ввода / вывода.

Как это реализуется операционной системой?

Это было полезно?

Решение

Один из подходов состоит в том, чтобы ОС приложить информацию об тех, кто ждет обратного вызова к соответствующей структуре данных, таких как эквивалент INEREL для файлового дескриптора, о котором ждете уведомление о чтении. Когда что-то происходит с этим файловым дескриптором, ОС сканирует официанты, чтобы увидеть, следует ли быть уведомленным. Если они должны, то это так. Вы можете прочитать о одной реализации этого в Бумага лимона, представляющая FreeBSD kqueue механизм. Отказ См. В частности, раздел 6, «Реализация», подразделы 3 и 4 «Деятельность на источнике событий» и «Доставка».

Другие советы

Это решается в ОС с использованием «Уведомления об учреждении / o / o), например, эполл, опрос, kqueue. или выберите.

Взгляни на дефт, И особенно это « Loop IO / Event Для конкретного примера используются упомянутые выше «системы уведомлений». (java.nio.cchaneels.selector Это способ Java Nio, чтобы обеспечить для этого абстракции.)

Отказ от ответственности: я дерзкий коммиттер

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top