### system_executor

An executor that uses arbitrary threads.

    typedef basic_system_executor< execution::blocking_t::possibly_t, execution::relationship_t::fork_t, std::allocator< void > > system_executor;

##### Member Functions

Name | Description
--- | ---
basic_system_executor [constructor] | Default constructor.
context | Obtain the underlying execution context.
defer | Request the system executor to invoke the given function object.
dispatch | Request the system executor to invoke the given function object.
execute | Execution function.
on_work_finished | Inform the executor that some work is no longer outstanding.
on_work_started | Inform the executor that it has some outstanding work to do.
post | Request the system executor to invoke the given function object.
query | Query the current value of the allocator property. — Query the occupancy (recommended number of work items) for the system context.
query [static] | Query the current value of the mapping property. — Query the current value of the context property. — Query the current value of the blocking property. — Query the current value of the relationship property.
require | Obtain an executor with the blocking.possibly property. — Obtain an executor with the blocking.always property. — Obtain an executor with the blocking.never property. — Obtain an executor with the relationship.continuation property. — Obtain an executor with the relationship.fork property. — Obtain an executor with the specified allocator property. — Obtain an executor with the default allocator property.

##### Friends

Name | Description
--- | ---
operator!= | Compare two executors for inequality.
operator== | Compare two executors for equality.

The system executor represents an execution context where functions are permitted to run on arbitrary threads. When the blocking.never property is established, the system executor will schedule the function to run on an unspecified system thread pool. When either blocking.possibly or blocking.always is established, the executor invokes the function immediately.

The system executor represents an execution context where functions are permitted to run on arbitrary threads. When the blocking.never property is established, the system executor will schedule the function to run on an unspecified system thread pool. When either blocking.possibly or blocking.always is established, the executor invokes the function immediately.

##### Requirements

Header: `asio/system_executor.hpp`

Convenience header: `asio.hpp`