Рассмотрим эту матрицу:
Некоторое время я думал, что может быть хорошим примером для каждой IO-модели.
Что я получаю до сих пор:
- Синхронная блокировка: например, однопоточное приложение, которое блокируется при выполнении системного вызова read().
- Синхронное неблокирующее: то же самое приложение, но вместо этого используется только один поток с использованием пула потоков с несколькими потоками, которые обрабатывают блокирующие операции ввода-вывода, в то время как основной поток не блокируется.
- Асинхронная блокировка: приложение, которое использует блокирующий вызов poll() для управления несколькими файловыми дескрипторами, такими как сокеты. (Является ли libevent также асинхронной блокировкой или асинхронной неблокировкой? А как насчет ePoll()?)
- Асинхронный неблокирующий: ???
Я хотел бы узнать с вашей помощью, ребята, верны ли мои мысли и не могли бы вы помочь мне понять каждую модель.
Спасибо!
Асинхронный