Асинхронный ввод-вывод: как происходит связь с потоком после завершения ввода-вывода?

Таким образом, в асинхронной среде, такой как Node или Netty, рабочему потоку может быть дано задание ввода-вывода, которое он инициирует вместе с обратным вызовом. Затем он возвращается и выбирает другую задачу, пока выполняется это задание ввода-вывода, будь то чтение диска, запрос БД и т. д.

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

Извините, что смешиваю Netty и Node, я предполагаю, что они делают это одинаково.


person JeffLL    schedule 20.03.2014    source источник


Ответы (1)


В Netty любая операция ввода-вывода является асинхронной, и метод чтения или записи вернет объект Future, который может добавить прослушиватель. После того, как будущее будет выполнено, прослушиватель перезвонит. В слушателе вы можете делать все, что захотите.

person xiang min    schedule 21.03.2014