
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[216.73.216.21] |
![]() |
|
Страницы: (78) « Первая ... 62 63 [64] 65 66 ... 77 78 ( Перейти к последнему сообщению ) |
Сообщ.
#946
,
|
|
|
В разных системах по разному, событийными библиотеками уровня ядра. epoll/kqueue/iocp Ну и различными более высокоуровневыми: libevent, libuv, boost.asio и куча других. |
Сообщ.
#947
,
|
|
|
Внутри драйверов ОС наиболее эффективно на базе прерываний, обработчик устанавливает соответствующее событие. |
![]() |
Сообщ.
#948
,
|
|
Сообщ.
#949
,
|
|
|
Цитата Axis @ В разных системах по разному, событийными библиотеками уровня ядра. epoll/kqueue/iocp Ну и различными более высокоуровневыми: libevent, libuv, boost.asio и куча других. epoll и kqueue - это синхронные операции. Внезапно. |
Сообщ.
#950
,
|
|
|
Цитата D_KEY @ epoll и kqueue - это синхронные операции Блокирующие, но не синхронные ![]() |
Сообщ.
#951
,
|
|
|
Цитата MyNameIsIgor @ Цитата D_KEY @ epoll и kqueue - это синхронные операции Блокирующиие, но не синхронные ![]() Что там асинхронного, если ты сам опрашиваешь? |
Сообщ.
#952
,
|
|
|
Цитата D_KEY @ Что там асинхронного, если ты сам опрашиваешь? Асинхронные там собственно операции ввода-вывода, как раз из-за того, что мы ожидаем множество событий, нам лишь нужно знать в каком потоке управления мы получим уведомление о событии. По-моему, понятно изложено здесь. Собственно, POSIX AIO - это асинхронное неблокирующее API, которое может уведомить нас через сигнал/обратный вызов без каких либо блокирующих вызовов. |
Сообщ.
#953
,
|
|
|
Цитата MyNameIsIgor @ Цитата D_KEY @ Что там асинхронного, если ты сам опрашиваешь? Асинхронные там собственно операции ввода-вывода, как раз из-за того, что мы ожидаем множество событий, нам лишь нужно знать в каком потоке управления мы получим уведомление о событии. Мы не получаем никаких уведомлений, мы сами опрашиваем состояния у группы объектов. Цитата Мы не о нем говорили. Собственно, POSIX AIO - это асинхронное неблокирующее API, которое может уведомить нас через сигнал/обратный вызов без каких либо блокирующих вызовов. |
Сообщ.
#954
,
|
|
|
Цитата D_KEY @ Мы не получаем никаких уведомлений, мы сами опрашиваем состояния у группы объектов. Как это не получаем? Именно получаем - выход из epoll_wait говорит о том, что состояние у кого-то изменилось. Выход из функции - это уведомление. Цитата D_KEY @ Мы не о нем говорили. Ну, не о нём, но это пример асинхронного неблокирующего API. Всякие демультиплексоры - асинхронное блокирующее. |
Сообщ.
#955
,
|
|
|
Цитата MyNameIsIgor @ Цитата D_KEY @ Мы не получаем никаких уведомлений, мы сами опрашиваем состояния у группы объектов. Как это не получаем? Именно получаем - выход из epoll_wait говорит о том, что состояние у кого-то изменилось. Выход из функции - это уведомление. Ну тогда и обычный read асинхронный, ведь из него бы тоже выходим. |
Сообщ.
#956
,
|
|
|
Цитата D_KEY @ Ну тогда и обычный read асинхронный, ведь из него бы тоже выходим. Т.е. между асинхронностью и неблокируемостью нет разницы? |
Сообщ.
#957
,
|
|
|
Цитата MyNameIsIgor @ Цитата D_KEY @ Мы не о нем говорили. Ну, не о нём, но это пример асинхронного неблокирующего API. Да. Цитата Всякие демультиплексоры - асинхронное блокирующее. Надуманная классификация с притягиванием за уши. Ввод/вывод бывает блокирующим(блокирует до выполнения), неблокирующим(не можем - возвращаемого управление и пробуем в другой раз), мультиплексированным(опрашиваем готовность группы) и асинхронным(говорим, что хотим получать уведомления и нас дергают, когда надо). На низком уровне. Дальше ты можешь навернуть проактор и не вдаваться в детали. Добавлено Цитата MyNameIsIgor @ Цитата D_KEY @ Ну тогда и обычный read асинхронный, ведь из него бы тоже выходим. Т.е. между асинхронностью и неблокируемостью нет разницы? Есть. Может быть синхронность без блокировки. И блокировка без синхронности(блокируемся до получения уведомления). |
Сообщ.
#958
,
|
|
|
Цитата D_KEY @ мультиплексированным(опрашиваем готовность группы) Боюсь, мы не опрашиваем, а дожидаемся. Цитата D_KEY @ Есть. Может быть синхронность без блокировки. И блокировка без синхронности(блокируемся до получения уведомления). Ну, вот я демультиплексоры назвал "блокировкой без синхронности", тебя не устроило. Как же тогда будет выглядеть синхронное без блокировки и блокировка без синхронности? |
Сообщ.
#959
,
|
|
|
Синхронное без блокировки - это O_NONBLOCK, блокировка без синхронности - ну, например, ручная блокировка на флажке, который устанавливаем в обработчика сигнала
![]() Я не понимаю, где асинхронность в select. Никаких асинхронных событий не происходит. Впрочем, очень условно можно сказать, что select как раз подходит под моё описание ожидания события, другое дело, что такая терминология ничего не привносит, а так же приводит к тому, что люди часто путают асинхронный ввод-вывод с мультиплексированным... |
Сообщ.
#960
,
|
|
|
Цитата D_KEY @ Впрочем, очень условно можно сказать, что select как раз подходит под моё описание ожидания события, другое дело, что такая терминология ничего не привносит, а так же приводит к тому, что люди часто путают асинхронный ввод-вывод с мультиплексированным... Ну, ok ![]() |