##### io_context::run (2 of 2 overloads)

(Deprecated: Use non-error_code overload.) Run the `io_context` object's event processing loop.

    count_type run(
        asio::error_code & ec);

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()`.

###### Parameters

ec

  Set to indicate what error occurred, if any.

###### Return Value

The number of handlers that were executed.

###### Remarks

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.