Функция вызова по умолчанию для обработчиков.
template<
typename Function>
void asio_handler_invoke(
Function & function,
... );
» more...
template<
typename Function>
void asio_handler_invoke(
const Function & function,
... );
» more...
Обработчики завершения асинхронных операций используются службойio_service.
связан с соответствующим объектом (например, розеткой или deadline_timer). Определенные гарантии предоставляются, когда обработчик может быть вызван, в частности, что обработчик может быть вызван только из потока, который в настоящее время вызываетзапустить().
на соответствующемio_service
объект. Поставщики могут впоследствии вызываться через другие объекты (например,).io_service:Прядь
объекты, обеспечивающие дополнительные гарантии.
Когда асинхронные операции состоят из других асинхронных операций, все промежуточные обработчики должны быть вызваны с использованием того же метода, что и конечный обработчик. Это необходимо для обеспечения того, чтобы определенные пользователем объекты не были доступны таким образом, который может нарушать гарантии. Эта функция крючка обеспечивает доступность метода, используемого для конечного обработчика, на каждом промежуточном этапе.
Внедряйте asio_handler_invoke для собственных обработчиков, чтобы указать стратегию вызова на заказ.
Эта реализация по умолчанию вызывает объект функции так:
function();
При необходимости реализация по умолчанию делает копию объекта функции так, чтобы можно было использовать оператор().
class my_handler;
template <typename Function>
void asio_handler_invoke(Function function, my_handler* context)
{
context->strand_.dispatch(function);
}
Заголовок:boost/asio/handler_invoke_hook.hpp
Удобный заголовок:boost/asio.hpp