Boost C++ Libraries/Boost.Asio

Boost.Asio 색인 - basic_signal_set::rebind_executor::other

까마귀75 2021. 2. 19. 11:10
728x90
반응형

basic_signal_set::rebind_executor::other

주어진 실행기(executor)로 리바인드 할 때의 시그널-세트 유형이다.

typedef basic_signal_set< Executor1 > other;

유 형

이 름 설 명
rebind_executor 시그널-세트 유형을 다른 실행기(executor)로 리바인딩한다.
executor_type 개체와 연결된 실행기(executor)의 유형이다.

멤버 함수

이 름 설 명
add signal_set에 신호를 추가한다.
async_wait 시그널이 전달될 때까지 대기하는 비동기 작업을 시작한다.
basic_signal_set
[constructor]
시그널를 추가하지 않고 시그널-세트를 생성한다.

하나의 시그널를 추가하여 시그널-세트를 생성한다.

두 개의 시그널를 추가하여 시그널-세트를 생성한다.

세 개의 시그널를 추가하여 시그널-세트를 생성한다.
cancel 시그널-세트와 연결된 모든 비동기 작업을 취소한다.
clear signal_set에서 모든 시그널을 제거한다.
get_executor 개체와 연결된 실행기(executor)를 가져온다.
remove signal_set에서 하나의 시그널을 제거한다.
~basic_signal_set
[destructor]
시그널-세트를 소멸한다.

basic_signal_set 클래스는 하나 이상의 시그널이 발생할 때까지 비동기 대기를 수행하는 기능을 제공한다.

스레드 안전성

고유 개체: 안전함
공유 개체: 안전하지 않음

예 제

비동기 대기를 수행한다:

void handler(
    const boost::system::error_code& error,
    int signal_number)
{
  if (!error)
  {
    // A signal occurred.
  }
}

...

// Construct a signal set registered for process termination.
boost::asio::signal_set signals(my_context, SIGINT, SIGTERM);

// Start an asynchronous wait for one of the signals to occur.
signals.async_wait(handler);

시그널 알림 대기열

시그널이 signal_set에 등록되고 대기중인 핸들러가 없을 때 시그널이 발생하면, 시그널 알림이 대기열에 추가된다. 해당 signal_set에서 다음 async_wait 작업은 알림을 대기열에서 제거한다. 여러 알림이 대기열에 있으면, 후속 async_wait 작업에서 한 번에 하나씩 대기열에서 제거한다. 시그널 알림은 시그널 번호의 오름차순으로 대기열에서 제거된다.

시그널 번호가 signal_set에서 제거되면 (remove 또는 erase 멤버 함수 사용) 해당 시그널에 대한 대기열에 있는 모든 알림이 제거된다.

시그널 다중 등록

다른 signal_set 개체에 동일한 시그널 번호를 등록할 수 있다. 시그널이 발생하면, 하나의 핸들러를 각 signal_set 개체에서 호출한다.

주의할 점은, 다중 등록은 Asio를 사용하여 등록한 시그널에 대해서만 작동한다. 응용프로그램에서 signal()이나 sigaction()과 같은 함수로 시그널 핸들러를 등록하면 안된다.

POSIX 플랫폼에서 시그널 마스킹

POSIX를 사용하면 sigprocmask()pthread_sigmask()와 같은 함수를 사용하여 시그널을 차단할 수 있다. 시그널을 전달하려면, signal_set 개체를 사용하여 등록된 모든 시그널이 적어도 하나의 스레드에서 차단 해제되었는지 프로그램에서 확인해야한다.

요구 사항

일반 헤더: boost/asio/basic_signal_set.hpp
편의 헤더: boost/asio.hpp

Boost.Asio 홈

728x90
반응형