На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: Qraizer, Hsilgos
Страницы: (78) « Первая ... 62 63 [64] 65 66 ...  77 78  ( Перейти к последнему сообщению )  
> Текущий Стандарт С++ и перспективы его развития
    Цитата Kray74 @
    Axis, а асинхронность как реализуется?

    В разных системах по разному, событийными библиотеками уровня ядра. epoll/kqueue/iocp
    Ну и различными более высокоуровневыми: libevent, libuv, boost.asio и куча других.
    Сообщение отредактировано: Axis -
      Цитата Kray74 @
      а асинхронность как реализуется?

      Внутри драйверов ОС наиболее эффективно на базе прерываний, обработчик устанавливает соответствующее событие.
        Цитата Axis @
        А делать кучу потоков это ныне моветон.

        Потоки потокам рознь. Erlang с его "зелеными" процессами рвет этот ваш асинхронный Node.JS как тузик грелку.
          Цитата Axis @
          Цитата Kray74 @
          Axis, а асинхронность как реализуется?

          В разных системах по разному, событийными библиотеками уровня ядра. epoll/kqueue/iocp
          Ну и различными более высокоуровневыми: libevent, libuv, boost.asio и куча других.

          epoll и kqueue - это синхронные операции. Внезапно.
            Цитата D_KEY @
            epoll и kqueue - это синхронные операции

            Блокирующие, но не синхронные ;) В том смысле, что они блокируют поток управления, но они не требуются для осуществления самого ввода-вывода, а служат для демультиплексирования.
            Сообщение отредактировано: MyNameIsIgor -
              Цитата MyNameIsIgor @
              Цитата D_KEY @
              epoll и kqueue - это синхронные операции

              Блокирующиие, но не синхронные ;) В том смыле, что они блокиркют поток управления, но они не требуются для осуществления самого ввода-вывода, а служат для мультиплексирования.

              Что там асинхронного, если ты сам опрашиваешь?
                Цитата D_KEY @
                Что там асинхронного, если ты сам опрашиваешь?

                Асинхронные там собственно операции ввода-вывода, как раз из-за того, что мы ожидаем множество событий, нам лишь нужно знать в каком потоке управления мы получим уведомление о событии. По-моему, понятно изложено здесь.
                Собственно, POSIX AIO - это асинхронное неблокирующее API, которое может уведомить нас через сигнал/обратный вызов без каких либо блокирующих вызовов.
                  Цитата MyNameIsIgor @
                  Цитата D_KEY @
                  Что там асинхронного, если ты сам опрашиваешь?

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

                  Мы не получаем никаких уведомлений, мы сами опрашиваем состояния у группы объектов.

                  Цитата
                  Собственно, POSIX AIO - это асинхронное неблокирующее API, которое может уведомить нас через сигнал/обратный вызов без каких либо блокирующих вызовов.
                  Мы не о нем говорили.
                  Сообщение отредактировано: D_KEY -
                    Цитата D_KEY @
                    Мы не получаем никаких уведомлений, мы сами опрашиваем состояния у группы объектов.

                    Как это не получаем? Именно получаем - выход из epoll_wait говорит о том, что состояние у кого-то изменилось. Выход из функции - это уведомление.
                    Цитата D_KEY @
                    Мы не о нем говорили.

                    Ну, не о нём, но это пример асинхронного неблокирующего API. Всякие демультиплексоры - асинхронное блокирующее.
                      Цитата MyNameIsIgor @
                      Цитата D_KEY @
                      Мы не получаем никаких уведомлений, мы сами опрашиваем состояния у группы объектов.

                      Как это не получаем? Именно получаем - выход из epoll_wait говорит о том, что состояние у кого-то изменилось. Выход из функции - это уведомление.

                      Ну тогда и обычный read асинхронный, ведь из него бы тоже выходим.
                        Цитата D_KEY @
                        Ну тогда и обычный read асинхронный, ведь из него бы тоже выходим.

                        Т.е. между асинхронностью и неблокируемостью нет разницы?
                        Сообщение отредактировано: MyNameIsIgor -
                          Цитата MyNameIsIgor @
                          Цитата D_KEY @
                          Мы не о нем говорили.

                          Ну, не о нём, но это пример асинхронного неблокирующего API.

                          Да.

                          Цитата
                          Всякие демультиплексоры - асинхронное блокирующее.

                          Надуманная классификация с притягиванием за уши. Ввод/вывод бывает блокирующим(блокирует до выполнения), неблокирующим(не можем - возвращаемого управление и пробуем в другой раз), мультиплексированным(опрашиваем готовность группы) и асинхронным(говорим, что хотим получать уведомления и нас дергают, когда надо). На низком уровне. Дальше ты можешь навернуть проактор и не вдаваться в детали.

                          Добавлено
                          Цитата MyNameIsIgor @
                          Цитата D_KEY @
                          Ну тогда и обычный read асинхронный, ведь из него бы тоже выходим.

                          Т.е. между асинхронностью и неблокируемостью нет разницы?

                          Есть. Может быть синхронность без блокировки. И блокировка без синхронности(блокируемся до получения уведомления).
                          Сообщение отредактировано: D_KEY -
                            Цитата D_KEY @
                            мультиплексированным(опрашиваем готовность группы)

                            Боюсь, мы не опрашиваем, а дожидаемся.
                            Цитата D_KEY @
                            Есть. Может быть синхронность без блокировки. И блокировка без синхронности(блокируемся до получения уведомления).

                            Ну, вот я демультиплексоры назвал "блокировкой без синхронности", тебя не устроило. Как же тогда будет выглядеть синхронное без блокировки и блокировка без синхронности?
                              Синхронное без блокировки - это O_NONBLOCK, блокировка без синхронности - ну, например, ручная блокировка на флажке, который устанавливаем в обработчика сигнала :crazy:
                              Я не понимаю, где асинхронность в select. Никаких асинхронных событий не происходит. Впрочем, очень условно можно сказать, что select как раз подходит под моё описание ожидания события, другое дело, что такая терминология ничего не привносит, а так же приводит к тому, что люди часто путают асинхронный ввод-вывод с мультиплексированным...
                              Сообщение отредактировано: D_KEY -
                                Цитата D_KEY @
                                Впрочем, очень условно можно сказать, что select как раз подходит под моё описание ожидания события, другое дело, что такая терминология ничего не привносит, а так же приводит к тому, что люди часто путают асинхронный ввод-вывод с мультиплексированным...

                                Ну, ok :D
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:
                                Страницы: (78) « Первая ... 62 63 [64] 65 66 ...  77 78


                                Рейтинг@Mail.ru
                                [ Script execution time: 0,0938 ]   [ 16 queries used ]   [ Generated: 18.06.25, 08:41 GMT ]