Remove system_executor


This paper proposes the removal of ​system_executor​ and ​system_context​ from the Networking TS.


The Networking TS [1] provides two related classes: ​system_executor​ and ​system_context​.
system_executor​ satisfies the named requirements ​DefaultConstructible​ and ​Executor​. system_context​ satisfies the named requirement ​ExecutionContext​.

The type alias ​system_context::executor_type​ names ​system_executor​. The member function ​system_context::get_executor​ returns a default constructed ​system_executor​. The member function ​system_executor::context​ returns a reference to a ​system_executor with static storage duration. Note that ​system_executor::context​ need not return a system_context​ which is a “Meyer’s singleton” [2].

The only direct use of ​system_context​ in the Networking TS is in the specification of system_executor​.

system_executor​ is directly used by the Networking TS in the specification of associated_executor​ and ​associated_executor_t​ where it is used as a “fallback” executor. This means that the unary versions of ​dispatch​, ​defer​, and ​post​ may make use of this type.

During review of the design of the asynchronous model of the Networking TS [3] concerns were raised about the implication and usage of ​system_context::stop​ and system_context::join​. This review and those concerns were discussed in SG4 in Prague 2020.

Stay in touch