Re[11]: Зачем нам асинхронность?
От: alex_public  
Дата: 08.08.20 19:52
Оценка: 2 (1)
Здравствуйте, Sharov, Вы писали:

_>>Забавная статья. В ней всё абсолютно правильно, кроме первого абзаца (ты видимо только его и прочитал?), в котором автор радостно заявляет, что никаких ждущих потоков нет, и потом явно показывает их наличие в статье.

S>Подождите, автор говорил про iocp потоки пула, как результат работы io на самом верху (механизм передачи результата).

И? Какая разница, если в наше приложение данные придут не через фиксированное время после попадания их в оперативную память, а через некоторое неопределённое, когда там освободятся все нужные очереди, планировщики и т.п.? В этом смысле даже обычный синхронный api будет эффективнее.

Вообще в этой области есть три классических подхода:

1. блокировка (до выполнения задачи)
2. опрос (о статусе выполнения задачи)
3. асинхронный вызов (коллбэк)

Так вот асинхронный ввод-вывод в винде иногда по незнанию позиционируют как третий вариант, но на самом деле там чисто второй, только слегка закумуфлированный. В линухе тоже самое (epoll), но они хотя бы честно говорят об этом, а не пытаются создать видимость настоящей асинхронности. Хотя в теории могли бы, т.к. в самой ОС присутствует механизм для подобных вызовов в пользовательском пространстве (сигналы), но для ввода-вывода он не используется. А вот реально асинхронный ввод-вывод сейчас можно пощупать руками наверное только при программирование МК (ну или написания своей ОС, но этим уже немногие занимаются).

S>А кто сказал, что эти потоки ждут? Сам факт нахождения их в пуле говорит об обратном -- это всего лишь способ

S>диспетчеризации результата io в приложение. Т.е. iocp поток это не самый обычный поток, скажем так.

Ты похоже невнимательно прочитал документацию по IOCP. )
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.