io_service, почему и как это используется?

Я думаю, что самый простой способ сделать это - просто запомнить координаты вашего последнего присутствия. Если нет никаких других правильных ходов, кроме возврата назад, вернитесь назад и отметьте место, на котором вы были, в качестве стены. Наконец вы доберетесь до [F].

38
задан Sam Miller 10 March 2013 в 04:28
поделиться

1 ответ

Asio io_service помощник для работы на асинхронных функциях. После того как асинхронная операция готова, она использует один из io_serviceвыполнение потоков для призывания обратно Вас. Если никакой такой поток не существует, это использует свой собственный внутренний поток для вызова Вас.

Думайте о нем как об очереди, содержащей операции. Это гарантирует Вам, которых те операции, когда выполнено, только сделают так на потоках который названный run() или run_once() методы, или при контакте с сокетами и асинхронным IO, его внутренним потоком.

Причина необходимо передать его всем, состоит в основном в том, что кто-то должен ожидать асинхронных операций для чтения, и, как указано в его собственной документации io_service ссылка ASIO на сервис ввода-вывода Операционной системы, таким образом, это абстрагирует далеко собственный асинхронный notifiers платформы, такой как kqueue, /dev/pool/, epoll, и методы для работы на тех, такой как select().

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

Можно смотреть на базовую документацию для получения лучшего чувства почему io_service необходим и что это делает.

52
ответ дан Axalo 27 November 2019 в 03:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: