Уведомить<io_service
>о вилочном событии.
void notify_fork(
boost::asio::io_service::fork_event event);
Эта функция используется для информирования<io_service
>о том, что процесс вот-вот разветвится или просто раздвоится. Это позволяет<io_service
>и услугам, которые он содержит, выполнять любое необходимое домашнее хозяйство для обеспечения правильной работы после вилки.
Эта функция не должна называться, в то время как любая другая функция<io_service
>или любая функция на объекте ввода/вывода, связанная с<io_service
>, вызывается в другой поток. Тем не менее, безопасно вызывать эту функцию из обработчика завершения, при условии, что никакой другой поток не обращается к<io_service
>.
- event
Событие, связанное с вилкой.
- boost::system::system_error
Выброшен на провал. Если уведомление не удается,<io_service
>объект больше не должен использоваться и должен быть уничтожен.
Следующий код иллюстрирует, как включить функцию<notify_fork()
>:
my_io_service.notify_fork(boost::asio::io_service::fork_prepare);
if (fork() == 0)
{
my_io_service.notify_fork(boost::asio::io_service::fork_child);
}
else
{
my_io_service.notify_fork(boost::asio::io_service::fork_parent);
}
Для каждого объекта обслуживания<svc
>в наборе<io_service
>выполняет<svc->fork_service();
>. При обработке события fork_prepare услуги посещаются в обратном порядке от начала срока службы объекта. В противном случае услуги посещаются в порядке начала срока службы объекта.