Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения

Embedded Main Loop

Boost , Chapter 1. Fiber , Sharing a Thread with Another Main Loop

Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

PrevUpHomeNext

Более сложной является ситуация, когда основной цикл приложения #8217 встроен в другую библиотеку или фреймворк. Такое приложение, как правило, после выполнения всех необходимых настроек передает управление некоторой форме функции run(), от которой управление не возвращается до отключения приложения.

Программа Boost.Asio может называться io_service::run().

В общем, трюк заключается в том, чтобы организовать передачу управления на this_fiber::yield() часто. Для этой цели можно использовать таймер Asio . Вы можете инстанцировать таймер, организуя вызов функции обработчика, когда таймер истекает. Функция обработчика может вызвать yield(), затем сбросить таймер и организовать его повторное пробуждение при следующем истечении срока действия.

Поскольку в этом мысленном эксперименте мы всегда передаем управление диспетчеру волокон через yield(), вызывающее волокно никогда не блокируется. Поэтому всегда есть хотя бы одно готовое волокно. Поэтому менеджер волокон никогда не вызывает алгоритм::suspend_until().

Использование io_service::post() вместо установки таймера для некоторого ненулевого интервала было бы недружественным к другим потокам. Когда все ввод/вывод откладывается и все волокна блокируются, io_service и менеджер волокон просто вращают процессор, передавая управление друг другу. Использование таймера позволяет настроить отзывчивость этой нити относительно других.


PrevUpHomeNext

Статья Embedded Main Loop раздела Chapter 1. Fiber Sharing a Thread with Another Main Loop может быть полезна для разработчиков на c++ и boost.




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



:: Главная :: Sharing a Thread with Another Main Loop ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-30 11:47:00
2025-05-20 06:26:19/0.0078999996185303/1