Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

io_context::~io_context
PrevUpHomeNext

Destructor.

~io_context();

On destruction, the io_context performs the following sequence of operations:

  • For each service object svc in the io_context set, in reverse order of the beginning of service object lifetime, performs svc->shutdown().
  • Uninvoked handler objects that were scheduled for deferred invocation on the io_context, or any associated strand, are destroyed.
  • For each service object svc in the io_context set, in reverse order of the beginning of service object lifetime, performs delete static_cast<io_context::service*>(svc).
Remarks

The destruction sequence described above permits programs to simplify their resource management by using shared_ptr<>. Where an object's lifetime is tied to the lifetime of a connection (or some other sequence of asynchronous operations), a shared_ptr to the object would be bound into the handlers for all asynchronous operations associated with it. This works as follows:

  • When a single connection ends, all associated asynchronous operations complete. The corresponding handler objects are destroyed, and all shared_ptr references to the objects are destroyed.
  • To shut down the whole program, the io_context function stop() is called to terminate any run() calls as soon as possible. The io_context destructor defined above destroys all handlers, causing all shared_ptr references to all connection objects to be destroyed.

PrevUpHomeNext