А.<shared_connection_block>объект блокирует соединение, предотвращая выполнение связанного слота при вызове связанного сигнала. Соединение будет оставаться заблокированным до тех пор, пока каждый<shared_connection_block>, который ссылается на соединение, не выпустит свой блок. А<shared_connection_block>освобождает свой блок, когда он разрушается, или его методразблокировкиназывается.
А.<shared_connection_block>Безопасно использовать даже послесигналов2::объект, из которого он был построен, был уничтожен или связь, на которую он ссылается, была отключена.
Обратите внимание, что блокировка соединения не гарантирует завершение выполнения соответствующего слота, если он уже находится в процессе запуска, когда блок соединения вступает в силу. Это похоже на поведение отключения, поскольку блокировка соединения не будет ждать, пока соответствующий слот соединения завершит выполнение. Эта ситуация может возникнуть в многопоточной среде, если блок соединения вступает в силу одновременно с вызовом сигнала, или в однопоточной среде, если слот блокирует собственное соединение.
shared_connection_block
public
construct/copy/destruct
Создает<shared_connection_block>, который может блокировать соединение, на которое ссылается<conn>.<shared_connection_block>первоначально блокирует соединение, если и только если<initially_blocking>параметр<true>. Блок соединения может быть высвобожден путем вызова методаразблокировкиили уничтожения объекта<shared_connection_block>.
По умолчанию конструкция<shared_connection_block>приводит к<shared_connection_block>, который ссылается на соединение NULL. Такой<shared_connection_block>безопасен для использования, хотя и не особенно полезен, пока ему не назначен другой<shared_connection_block>, который ссылается на реальное соединение.
Еслиблокировка[] верна, высвобождает блок соединения.
shared_connection_block connection blocking
<
voidunblock();
>
Эффекты:
Еслиблокировка() верна, высвобождает блок соединения. Обратите внимание, что соединение может оставаться заблокированным из-за других<shared_connection_block>объектов.
Последующие условия:
<this->blocking() == false>
<
voidblock();
>
Эффекты:
Еслиблокировка() является ложной, повторно подтверждает блок на соединении.
Последующие условия:
<this->blocking() == true>
<
boolblocking()const;
>
Возврат:
<true>, если<this>утверждает блок на соединении.
Примечания:
<this->blocking() == true>подразумевает<connection::blocked() == true>для соединения. Однако<this->blocking() == false>не обязательно подразумевает<connection::blocked() == false>, поскольку соединение может быть заблокировано другим<shared_connection_block>объектом.
Объект соединения для соединения, на который ссылается<this>.
Статья Class shared_connection_block раздела The Boost C++ Libraries BoostBook Documentation Subset Reference может быть полезна для разработчиков на c++ и boost.
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.