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 홈
'Boost C++ Libraries > Boost.Asio' 카테고리의 다른 글
Boost.Asio 색인 - basic_socket_acceptor::rebind_executor::other (0) | 2021.02.19 |
---|---|
Boost.Asio 색인 - basic_socket::rebind_executor::other (0) | 2021.02.19 |
Boost.Asio 색인 - basic_serial_port::rebind_executor::other (0) | 2021.02.18 |
Boost.Asio 색인 - basic_seq_packet_socket::rebind_executor::other (0) | 2021.02.18 |
Boost.Asio 색인 - basic_raw_socket::rebind_executor::other (0) | 2021.02.18 |