Помогите понять IO-модели

Рассмотрим эту матрицу:

введите здесь описание изображения

Некоторое время я думал, что может быть хорошим примером для каждой IO-модели.

Что я получаю до сих пор:

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

Я хотел бы узнать с вашей помощью, ребята, верны ли мои мысли и не могли бы вы помочь мне понять каждую модель.

Спасибо!

Асинхронный


person Filipe Santos    schedule 16.03.2011    source источник


Ответы (1)


Синхронная блокировка: вы подходите к кофейнику и нажимаете заварить. Вам запрещено уходить, пока кофе не закончит вариться.

Синхронный неблокирующий: вы читаете газету и хотите кофе, который вы говорите своему другу, чтобы он заварил себе кофеварку. Он делает это и должен ждать, пока он не закончится, чтобы покинуть банк.

Асинхронная блокировка: вы читаете газету и хотите еще кофе. Вы говорите своему другу, чтобы он заварил чайник и принес вам чашку кофе, когда он будет готов.

person Justin Thomas    schedule 16.03.2011