std::jthread
<thread>
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.
Contents
[edit] Member types
[edit] Member functions
(public member function) [edit]
Observers
(public member function) [edit]
(public static member function) [edit]
Operations
Stop token handling
stop_source
object associated with the shared stop state of the thread (public member function) [edit]
stop_token
associated with the shared stop state of the thread (public member function) [edit]
[edit] Non-member functions
[edit] Notes
Feature-test macro | Value | Std | Feature |
---|---|---|---|
__cpp_lib_jthread |
201911L |
(C++20) | Stop token and joining thread |