Class system_context implements the execution context associated with system_executor objects.
namespace std {
namespace experimental {
namespace net {
inline namespace v1 {
  class system_context : public execution_context
  {
  public:
    // types:
    using executor_type = system_executor;
    // construct / copy / destroy:
    system_context() = delete;
    system_context(const system_context&) = delete;
    system_context& operator=(const system_context&) = delete;
    ~system_context();
    // system_context operations:
    executor_type get_executor() noexcept;
    void stop();
    bool stopped() const noexcept;
    void join();
  };
} // inline namespace v1
} // namespace net
} // namespace experimental
} // namespace std
The class system_context satisfies the ExecutionContext ([async.reqmts.executioncontext]) type requirements.
The system_context member functions get_executor, stop, and stopped, and the system_executor copy constructors, member functions and comparison operators, do not introduce data races as a result of concurrent calls to those functions from different threads of execution.
Effects: Performs stop() followed by join().
executor_type get_executor() noexcept;
Returns: system_executor().
Effects: Signals all system threads to exit as soon as possible. If a system thread is currently executing a function object, the thread will exit only after completion of that function object. Returns without waiting for the system threads to complete.
Postconditions: stopped() == true.
bool stopped() const noexcept;
Returns: true if the system_context has been stopped by a prior call to stop.
Effects: Blocks the calling thread (C++ 2014 [defns.block]) until all system threads have completed.
Synchronization: The completion of each system thread synchronizes with (C++ 2014 [intro.multithread]) the corresponding successful join() return.