Это не совсем возможно. Целый IO API должен быть повторно реализован. NIO означает неблокирующий ввод / вывод, это не то же самое, что асинхронный ввод / вывод. Неблокирующая реализация реализована в JAVA и вкратце, это означает, что ОС не имеет возможности уведомлять среду выполнения о завершении операции. Isned Java использует системные вызовы select()
или poll()
, чтобы проверить, доступны ли данные.
Я мог бы поговорить об этом, но украденная картинка стоит 100 слов:
Именно поэтому в JAVA требуется отдельный поток для постоянного вызова check, check, check, check .....
Я не знаю платформу .NET, но если то, что вы опубликовали, правильно, то используется асинхронный ввод-вывод, поэтому последний столбец. Но я не доверяю ничему, что исходит от Microsoft.
Надеюсь, это ответит на ваш вопрос. Также здесь я дополнительный материал для чтения:
https://stackoverflow.com/a/2625565/8951886