Слияние кода завершено, страница обновится автоматически
+-+ Блокирующий ввод-вывод (BIO)
|
+-+ Неблокирующий ввод-вывод (NIO)
|
+----+ Ввод-вывод с использованием нескольких потоков +--+
| |
| +-+ Многоканальный ввод-вывод
| |
| +-+ Ввод-вывод, управляемый сигналами
Модели ввода-вывода +---+
|
|
| +-+ Linux (AIO)
| (io_uring)
+----+ Асинхронный ввод-вывод +--+
|
+-+ Windows (IOCP)
```
```text
Приложение ядро
+---------+ +-----------+ +---+
| | системный вызов | нет | |
| Считать| +--------> | дейтаграмма | |
| recvfrom| | готова | |
| | | + | +-+ ожидание
| | | | | +-+ данных
| | | v | |
| | | дейтаграмма | |
| | | готова | +---+
| | | |
| | | скопировать | +---+
| | | дейтаграмму | |
|процесс | | + | +-+ скопировать данные
|дейтаграммы| возврат | | | +-+ из ядра в пользовательское пространство
| | <--------+ | v | |
| | | скопировать | +---+
| | | завершить |
+---------+ +-----------+
```