Frage

Ich war auf der Suche, wie die verdrehten und node.js Frameworks Arbeit, und ich bin versuchen, genau wie das Betriebssystem unterstützt I / O zu verstehen Operationen Rückrufe verwendet wird.

Ich verstehe, es ist gut, weil wir weniger Threads brauchen, weil wir nicht tun Notwendigkeit haben Threads warten auf I / O-Operationen blockiert. Aber etwas einmal hat den Rückruf rufen die E / A abgeschlossen ist.

Wie dies durch das Betriebssystem implementiert ist?

War es hilfreich?

Lösung

Ein Ansatz ist die OS anhängen Informationen über jemandem wartet auf einen Rückruf an der relevanten Datenstruktur zu haben, wie die im Kernel-Äquivalent des Dateideskriptor Sie wartet Lesebenachrichtigung über. Wenn etwas in diesem Dateideskriptors geschieht, scannt das OS die Kellner zu sehen, ob benachrichtigt werden soll. Wenn sie sollten, dann tut es so. Sie können über eine Umsetzung dieses in Lemon Papier Einführung von FreeBSD kqueue Mechanismus . Siehe insbesondere Abschnitt 6, „Implementierung“, Abs 3 und 4, „Aktivität auf Ereignisquelle“ und „Delivery“.

Andere Tipps

Dies ist in O gelöst durch Verwendung von „E / A-Ereignisbenachrichtigungsmöglichkeiten / Schnittstellen“, zB epoll , Umfrage, kqueue oder wählen.

Hier finden Sie aktuelle flink , und vor allem seine java.nio. channels.Selector ist die Java-nio Weise eine Abstraktion für diese zur Verfügung zu stellen.)

Disclaimer: im a flink Committer

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top