|  | 
            Run the io_context
            object's event processing loop.
          
count_type run();
            The run() function blocks until all work has finished and
            there are no more handlers to be dispatched, or until the io_context
            has been stopped.
          
            Multiple threads may call the run() function to set up a
            pool of threads from which the io_context
            may execute handlers. All threads that are waiting in the pool are equivalent
            and the io_context
            may choose any one of them to invoke a handler.
          
            A normal exit from the run() function implies that the
            io_context
            object is stopped (the stopped() function returns true).
            Subsequent calls to run(), run_one(), poll()
            or poll_one() will return immediately unless there is a
            prior call to restart().
          
The number of handlers that were executed.
            Calling the run() function from a thread that is currently
            calling one of run(), run_one(), run_for(),
            run_until(), poll() or poll_one()
            on the same io_context
            object may introduce the potential for deadlock. It is the caller's reponsibility
            to avoid this.
          
            The poll() function may also be used to dispatch ready handlers,
            but without blocking.