728x90
반응형
io_context::~io_context
소멸자(destructor).
~io_context();
소멸 시 io_context는 다음과 같은 일련의 작업을 수행한다:
- io_context 집합 내에 각 서비스 개체 svc에 대해, 서비스 개체 생명주기 시작의 역순으로 svc->shutdown()을 수행한다.
- io_context 또는 관련 스트랜드(strand)에서 지연된 호출을 위해 예약된 호출되지 않은 핸들러 개체가 삭제된다.
- io_context 집합 내에 각 서비스 개체 svc에 대해, 서비스 개체 생명주기 시작의 역순으로 delete static_cast<io_context::service*>(svc)를 수행한다.
비고
위에서 설명한 소멸 시퀀스를 통해 프로그램은 shared_ptr<>를 사용하여 리소스 관리를 단순화할 수 있다. 개체의 생명주기가 연결(connection)의 생명주기(또는 다른 비동기 작업 시퀀스)와 결합되어 있는 경우, 개체에 대한 shared_ptr은 관련된 모든 비동기 작업에 대한 핸들러에 바인딩된다. 이 작업은 다음과 같다:
- 단일 연결이 종료되면, 관련된 모든 비동기 작업이 완료된다. 해당 핸들러 개체가 소멸(파괴)되고, 개체에 대한 모든 shared_ptr 참조가 소멸(파괴)된다.
- 전체 프로그램을 종료하려면, io_context의 함수 stop()을 호출하여 가능한 빨리 모든 run() 호출을 종료한다. 위에 정의된 io_context 소멸자(destructor)는 모든 핸들러를 소멸(파괴)하여, 모든 연결 개체에 대한 모든 shared_ptr 참조를 소멸(파괴)한다.
728x90
반응형
'Boost C++ Libraries > Boost.Asio' 카테고리의 다른 글
Boost.Asio 색인 - ip::resolver_base::~resolver_base (0) | 2020.12.30 |
---|---|
Boost.Asio 색인 - windows::overlapped_ptr::~overlapped_ptr (0) | 2020.12.30 |
Boost.Asio 색인 - executor_work_guard::~executor_work_guard (0) | 2020.12.29 |
Boost.Asio 색인 - executor_binder::~executor_binder (0) | 2020.12.29 |
Boost.Asio 색인 - executor::~executor (0) | 2020.12.29 |