|
|
||||||
boost::asio::io_service::stop()09.01.2014, 22:12. Показов 3774. Ответов 6
Метки нет (Все метки)
Читаю тут одну книгу и в ней есть такой пример по использованию boost::asio::io_service примерно вот такого содержимого:
P.S. Я только начал вникать в boost::asio.
0
|
||||||
| 09.01.2014, 22:12 | |
|
Ответы с готовыми решениями:
6
Boost.asio io_service.run не дожидается выполнения асинхронного чтения
|
|
Ушел с форума
|
||
| 09.01.2014, 22:41 | ||
|
Мне кажется, все работает именно так, как должно. Вы поставили в очередь
100 операций, затем из одного обработчика вызываете stop. Этот stop, видимо, тоже ставится в очередь, и пока до его обработки доходит дело, все операции успевают завершиться. Вот если здесь создать несколько рабочих потоков, которые крутились бы в io_service::run, то картина могла быть иной. Не забываем, что на Windows (кстати, ОС какая ?) Boost.Asio использует порты завершения ввода-вывода, а сигнал ставится в очередь порта с помощью функции PostQueuedCompletionStatus и, надо полагать, обрабатывается с таким же приоритетом, как и остальные I/O-операции. Т.е. последовательно. Кстати, в самом Boost.Asio по поводу io_service::stop пишут:
Необязательно сразу.
1
|
||
|
|
|||||||||||
| 10.01.2014, 00:33 [ТС] | |||||||||||
|
Я тогда просто недоумеваю, зачем этот пример тогда в книге дается? На всякий случай вот полный пример:
tasks_processor_base.hpp
main.cpp
P.S. Если это может зависить от ОС, то у меня Windows 8.1 64bit
0
|
|||||||||||
|
Ушел с форума
|
|||||||
| 10.01.2014, 01:08 | |||||||
|
Boost.Asio - это кросс-платформенная библиотека, и она в своих "потрохах"
использует разные платформо-зависимые вещи. На Windows используются порты завершения ввода-вывода (I/O Completion Ports, IOCP), на других системах - epoll/select и т.д. В зависимости от выбранного метода поведение может немного варьироваться. Думаю, данный случай - как раз из таких. Автор, скорее всего, не проверял свой код на Windows. Кстати, что за книга ? Если Вы почитаете в MSDN про IOCP, в особенности о работе таких функций, как GetQueuedCompletionStatus и PostQueuedCompletionStatus, то станет ясно, почему io_service::stop не останавливает работу io_service::run немедленно. Сигнал ставится в конец очереди и рабочий поток выгребает его оттуда только после того, как обработает все I/O-операции, стоящие в очереди перед ним. Кстати, в Boost можно отключить IOCP, тогда библиотека будет использовать менее эффективную модель select. Я ради интереса поставил в самом начале заголовка tasks_processor_base.hpp такую строчку:
Добавлено через 7 минут И еще хочу добавить, что данный пример несколько надуман. В реальных условиях такое бывает очень редко, чтобы io_service сначала нагрузили большим количеством операций, а затем их бы "разматывал" один поток. Как правило, потоков несколько (thread pool), а I/O-операции поступают и обрабатываются постепенно: запустили на сокете операцию чтения, получили сигнал завершения, запустили запись, снова ждем завершения, затем снова чтение и т.д. В этом случае очередь io_service поддерживается в состоянии, близком к пустому, поэтому если кто-то вызывает io_service::stop, остановка происходит практически без задержки.
1
|
|||||||
|
503 / 352 / 94
Регистрация: 22.03.2011
Сообщений: 1,112
|
|||
| 10.01.2014, 19:25 | |||
|
0
|
|||
|
Ушел с форума
|
||
| 10.01.2014, 19:40 | ||
|
А так да, очередь пуста - io_service::run возвращает управление. Если только не используется какой-нибудь io_service::work.
0
|
||
| 10.01.2014, 19:40 | |
|
Помогаю со студенческими работами здесь
7
Boost Asio C++ boost/asio Boost.asio boost::asio пример boost::asio cессии Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Налог на собак: https:/ / **********/ gallery/ V06K53e
Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf
Пост отсюда. . .
|
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop?
Ниже её машинный перевод.
После долгих разбирательств я наконец-то вернула себе. . .
|
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод
Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод.
Thinkpad X220 Tablet —. . .
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|