table of contents
std::jthread(3) | C++ Standard Libary | std::jthread(3) |
NAME¶
std::jthread - std::jthread
Synopsis¶
Defined in header <thread>
class jthread; (since C++20)
The class jthread represents a single thread of execution. It has the same
general
behavior as std::thread, except that jthread automatically rejoins on
destruction,
and can be cancelled/stopped in certain situations.
Threads begin execution immediately upon construction of the associated
thread
object (pending any OS scheduling delays), starting at the top-level function
provided as a constructor argument. The return value of the top-level
function is
ignored and if it terminates by throwing an exception, std::terminate is
called. The
top-level function may communicate its return value or an exception to the
caller
via std::promise or by modifying shared variables (which may require
synchronization, see std::mutex and std::atomic).
Unlike std::thread, the jthread logically holds an internal private member of
type
std::stop_source, which maintains a shared stop-state. The jthread
constructor
accepts a function that takes a std::stop_token as its first argument, which
will be
passed in by the jthread from its internal std::stop_source. This allows the
function to check if stop has been requested during its execution, and return
if it
has.
std::jthread objects may also be in the state that does not represent any
thread
(after default construction, move from, detach, or join), and a thread of
execution
may be not associated with any jthread objects (after detach).
No two std::jthread objects may represent the same thread of execution;
std::jthread
is not CopyConstructible or CopyAssignable, although it is MoveConstructible
and
MoveAssignable.
Member types¶
Member type Definition
id std::thread::id
native_handle_type (optional*) std::thread::native_handle_type
Member functions¶
constructor constructs new jthread object
(public member function)
if the thread is joinable, then a stop is requested and the
destructor thread joins
(public member function)
operator= moves the jthread object
(public member function)
Observers¶
checks whether the thread is joinable, i.e. potentially running
joinable in parallel context
(public member function)
get_id returns the id of the thread
(public member function)
native_handle returns the underlying implementation-defined thread handle
(public member function)
hardware_concurrency returns the number of concurrent threads supported by
the
[static] implementation
(public static member function)
Operations¶
join waits for the thread to finish its execution
(public member function)
permits the thread to execute independently from the thread
detach handle
(public member function)
swap swaps two jthread objects
(public member function)
Stop token handling
returns a stop_source object associated with the shared stop
get_stop_source state of the thread
(public member function)
returns a stop_token associated with the shared stop state of
get_stop_token the thread
(public member function)
request_stop requests execution stop via the shared stop state of the thread
(public member function)
Non-member functions¶
swap(std::jthread) specializes the std::swap algorithm
(C++20) (function)
Notes¶
Feature-test macro Value Std Feature
__cpp_lib_jthread 201911L (C++20) Stop token and joining thread
See also¶
thread manages a separate thread
(C++11) (class)
2024.06.10 | http://cppreference.com |