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.