![]() |
![]() ![]() ![]() ![]() ![]() |
![]() |
basic_signal_setBoost , Boost.Asio , Reference
|
Имя |
Описание |
---|---|
Основной тип реализации объекта ввода/вывода. |
|
Тип службы, которая будет использоваться для обеспечения операций ввода-вывода. |
Имя |
Описание |
---|---|
Добавить сигнал в набор сигнала. |
|
Начните асинхронную операцию, чтобы дождаться сигнала. |
|
Постройте набор сигналов без добавления каких-либо сигналов. Постройте набор сигналов и добавьте один сигнал. Постройте набор сигналов и добавьте два сигнала. Постройте набор сигналов и добавьте три сигнала. |
|
Отменить все операции, связанные с набором сигнала. |
|
Удалить все сигналы из набора сигналов. |
|
Получить услугу io_, связанную с объектом. |
|
Удалить сигнал из набора сигналов. |
Имя |
Описание |
---|---|
Получить основную реализацию объекта ввода/вывода. |
|
Получить услугу, связанную с объектом ввода/вывода. |
Имя |
Описание |
---|---|
(Использовать get_implementation()) Основная реализация объекта ввода/вывода. |
|
(Использовать get_service()) Услуга, связанная с объектом ввода/вывода. |
.<basic_signal_set
>шаблон класса обеспечивает возможность выполнять асинхронное ожидание одного или более сигналов.
Большинство приложений используют.<signal_set
>Типдеф.
Отличительныеобъекты:Безопасные.
Совместнообъекты:небезопасны.
Выполнение асинхронного ожидания:
void handler( const boost::system::error_code& error, int signal_number) { if (!error) { // A signal occurred. } } ... // Construct a signal set registered for process termination. boost::asio::signal_set signals(io_service, SIGINT, SIGTERM); // Start an asynchronous wait for one of the signals to occur. signals.async_wait(handler);
Если сигнал регистрируется с помощью набора signal_set, и сигнал возникает, когда нет обработчиков ожидания, то уведомление о сигнале ставится в очередь. Следующая операция async_wait на этом наборе сигнала выполнит очередь из уведомления. Если несколько уведомлений стоят в очереди, последующие операции async_wait очерчивают их по одному за раз. Уведомления о сигналах размещаются в порядке номера восходящего сигнала.
Если номер сигнала удаляется из набора signal_set (используя функции<remove
>или<erase
>), то любые очерченные уведомления для этого сигнала отбрасываются.
Один и тот же номер сигнала может быть зарегистрирован с различными объектами. При появлении сигнала один обработчик вызывается для каждого заданного сигналом объекта.
Обратите внимание, что многократная регистрация работает только для сигналов, зарегистрированных с помощью Asio. Приложение также не должно регистрировать обработчик сигналов с использованием таких функций, как<signal()
>или<sigaction()
>.
POSIX позволяет блокировать сигналы с помощью таких функций, как<sigprocmask()
>и<pthread_sigmask()
>. Для передачи сигналов программы должны гарантировать, что любые сигналы, зарегистрированные с использованием объектов, установленных сигналом, разблокированы по меньшей мере в одном потоке.
Заголовок:<boost/asio/basic_signal_set.hpp
>
Удобный заголовок:<boost/asio.hpp
>
Статья basic_signal_set раздела Boost.Asio Reference может быть полезна для разработчиков на c++ и boost.
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.
реклама |