Уведомить<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 услуги посещаются в обратном порядке от начала срока службы объекта. В противном случае услуги посещаются в порядке начала срока службы объекта.