Boost C++ Libraries/Boost.Asio

Boost.Asio 색인 - thread_pool::notify_fork

까마귀75 2021. 2. 12. 21:28
728x90
반응형

thread_pool::notify_fork

execution_context에서 상속된다.

fork 관련 이벤트를 execution_context에 알린다.

void notify_fork(
    fork_event event);

이 함수는 프로세스가 fork하려고 하거나, 방금 fork 했음을 execution_context에 알리는 데 사용된다. 이를 통해 execution_context와 여기에 포함된 서비스는 fork 이후에 올바르게 작동하도록 필요한 관리 작업을 수행할 수 있다.

이 함수는 다른 execution_context 함수 또는 execution_context의 파생된 클래스와 연관된 함수가 다른 스레드에서 호출되는 동안 호출해서는 안된다. 그러나 다른 스레드가 execution_context 또는 파생된 클래스에 접근하지 않는 경우에는 완료 핸들러 내에서 이 함수를 호출하는 것이 안전하다.

파라미터

이 름 설 명
event fork 관련 이벤트

예 외

이 름 설 명
boost::system::system_error 실패를 발생한다. 알림이 실패하면 execution_context 개체는 더 이상 사용되지 않고 소멸되어야 한다.

예 제

다음 코드는 notify_fork() 함수를 통합하는 방법을 보여준다:

my_execution_context.notify_fork(execution_context::fork_prepare);
if (fork() == 0)
{
  // This is the child process.
  my_execution_context.notify_fork(execution_context::fork_child);
}
else
{
  // This is the parent process.
  my_execution_context.notify_fork(execution_context::fork_parent);
}

참 고

execution_context 집합내에 각 서비스 개체 svc에 대해 svc->notify_fork();를 수행한다. fork_prepare 이벤트를 처리하는 경우, 서비스 개체 수명 시작의 역순으로 서비스를 방문한다. 다른 경우는 서비스 개체 수명 시작순으로 서비스를 방문한다.

Boost.Asio 홈

728x90
반응형