|
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Member functions | ||||
| Observers | ||||
| Operations | ||||
| Stop token handling | ||||
| Non-member functions | ||||
Defined in header <thread> | ||
class jthread; | (since C++20) | |
The classjthread representsa single thread of execution. It has the same general behavior asstd::thread, except thatjthread 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 aconstructor 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 viastd::promise or by modifying shared variables (which may require synchronization, seestd::mutex andstd::atomic).
Unlikestd::thread, thejthread logically holds an internal private member of typestd::stop_source, which maintains a shared stop-state. Thejthread constructor accepts a function that takes astd::stop_token as its first argument, which will be passed in by thejthread from its internalstd::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, orjoin), and a thread of execution may be not associated with anyjthread objects (afterdetach).
No twostd::jthread objects may represent the same thread of execution;std::jthread is notCopyConstructible orCopyAssignable, although it isMoveConstructible andMoveAssignable.
Contents |
| Member type | Definition |
id | std::thread::id |
native_handle_type(optional*) | std::thread::native_handle_type[edit] |
constructs newjthread object(public member function)[edit] | |
| if the thread is joinable, then a stop is requested and the thread joins (public member function)[edit] | |
moves thejthread object(public member function)[edit] | |
Observers | |
| checks whether the thread is joinable, i.e. potentially running in parallel context (public member function)[edit] | |
| returns theid of the thread (public member function)[edit] | |
| returns the underlying implementation-defined thread handle (public member function)[edit] | |
[static] | returns the number of concurrent threads supported by the implementation (public static member function)[edit] |
Operations | |
| waits for the thread to finish its execution (public member function)[edit] | |
| permits the thread to execute independently from the thread handle (public member function)[edit] | |
| swaps two jthread objects (public member function)[edit] | |
Stop token handling | |
returns astop_source object associated with the shared stop state of the thread(public member function)[edit] | |
returns astop_token associated with the shared stop state of the thread(public member function)[edit] | |
| requests execution stop via the shared stop state of the thread (public member function)[edit] | |
(C++20) | specializes thestd::swap algorithm (function)[edit] |
| Feature-test macro | Value | Std | Feature |
|---|---|---|---|
__cpp_lib_jthread | 201911L | (C++20) | Stop token andjoining thread |
(C++11) | manages a separate thread (class)[edit] |