![]() |
![]() ![]() ![]() ![]() |
![]() |
strandBoost , Boost.Asio , Reference
|
||||||||||||||||||||||
|
Имя |
Описание |
|---|---|
Просите пряди вызвать данного обработчика. |
|
Получите услугу io_, связанную с нитью. |
|
Просите цепь вызвать данного обработчика и немедленно вернуться. |
|
Определить, работает ли нить в текущей нити. |
|
Конструктор. |
|
Создайте новый обработчик, который автоматически отправляет обернутый обработчик на нить. |
|
Разрушитель. |
Класс<io_service::strand>обеспечивает возможность отправки и отправки обработчиков с гарантией того, что ни один из этих обработчиков не будет выполнять одновременно.
Учитывая:
s>a>, отвечающий требованиям обработчика завершенияa1>, являющийся произвольной копией<a>, выполненной реализациейb>, отвечающий требованиям обработчика завершенияb1>, являющийся произвольной копией<b>, выполненной реализациейесли верно одно из следующих условий:
s.post(a)>Происходит раньше<s.post(b)>s.post(a)>происходит до<s.dispatch(b)>, где последнее совершается вне цепиs.dispatch(a)>происходит до<s.post(b)>, где первое совершается вне цепи.s.dispatch(a)>происходит до<s.dispatch(b)>, где оба выполняются вне нити.<asio_handler_invoke(a1,
&a1)>до<asio_handler_invoke(b1,
&b1)>.
Обратите внимание, что в следующем случае:
async_op_1(..., s.wrap(a)); async_op_2(..., s.wrap(b));
Завершение первой асинхронной операции будет выполняться<s.dispatch(a)>, а второй будет выполняться<s.dispatch(b)>, но порядок, в котором они выполняются, не определен. То есть вы не можете сказать, происходит ли одно раньше другого. Таким образом, ни одно из вышеперечисленных условий не выполняется, и не предоставляется никаких гарантий заказа.
Реализация не гарантирует, что обработчики, размещенные или отправленные через различные объекты<strand>, будут вызываться одновременно.
Отличительныеобъекты:Сейф.
Совместнообъекты:Сейф.
Заголовок:<boost/asio/strand.hpp>
Удобный заголовок:<boost/asio.hpp>
Статья strand раздела Boost.Asio Reference может быть полезна для разработчиков на c++ и boost.
реклама |