libstdc++
std::jthread Class Reference

#include <thread>

Public Types

using id = thread::id
 
using native_handle_type = thread::native_handle_type
 

Public Member Functions

template<typename _Callable , typename... _Args, typename = enable_if_t<!is_same_v<remove_cvref_t<_Callable>, jthread>>>
 jthread (_Callable &&__f, _Args &&... __args)
 
 jthread (const jthread &)=delete
 
 jthread (jthread &&) noexcept=default
 
void detach ()
 
id get_id () const noexcept
 
stop_source get_stop_source () noexcept
 
stop_token get_stop_token () const noexcept
 
void join ()
 
bool joinable () const noexcept
 
native_handle_type native_handle ()
 
jthreadoperator= (const jthread &)=delete
 
jthreadoperator= (jthread &&__other) noexcept
 
bool request_stop () noexcept
 
void swap (jthread &__other) noexcept
 

Static Public Member Functions

static unsigned hardware_concurrency () noexcept
 

Friends

void swap (jthread &__lhs, jthread &__rhs) noexcept
 

Detailed Description

A thread with cancellation and automatic joining.

Unlike std::thread, destroying a joinable std::jthread will not terminate the process. Instead, it will try to request its thread to stop, then will join it.

A std::jthread has a std::stop_source member which will be passed as the first argument to the callable that runs in the new thread (as long as the callable will accept that argument). That can then be used to send a stop request that the new thread can test for.

Since
C++20

Definition at line 134 of file thread.

Member Typedef Documentation

◆ id

Definition at line 137 of file thread.

◆ native_handle_type

using std::jthread::native_handle_type = thread::native_handle_type

Definition at line 138 of file thread.

Constructor & Destructor Documentation

◆ jthread() [1/2]

std::jthread::jthread ( )
inlinenoexcept

Definition at line 140 of file thread.

◆ jthread() [2/2]

template<typename _Callable , typename... _Args, typename = enable_if_t<!is_same_v<remove_cvref_t<_Callable>, jthread>>>
std::jthread::jthread ( _Callable &&  __f,
_Args &&...  __args 
)
inlineexplicit

Definition at line 148 of file thread.

◆ ~jthread()

std::jthread::~jthread ( )
inline

Definition at line 156 of file thread.

Member Function Documentation

◆ detach()

void std::jthread::detach ( )
inline

Definition at line 195 of file thread.

◆ get_id()

id std::jthread::get_id ( ) const
inlinenoexcept

Definition at line 201 of file thread.

◆ get_stop_source()

stop_source std::jthread::get_stop_source ( )
inlinenoexcept

Definition at line 219 of file thread.

◆ get_stop_token()

stop_token std::jthread::get_stop_token ( ) const
inlinenoexcept

Definition at line 225 of file thread.

◆ hardware_concurrency()

static unsigned std::jthread::hardware_concurrency ( )
inlinestaticnoexcept

Definition at line 213 of file thread.

◆ join()

void std::jthread::join ( )
inline

Definition at line 189 of file thread.

◆ joinable()

bool std::jthread::joinable ( ) const
inlinenoexcept

Definition at line 183 of file thread.

◆ native_handle()

native_handle_type std::jthread::native_handle ( )
inline

Definition at line 207 of file thread.

◆ operator=()

jthread & std::jthread::operator= ( jthread &&  __other)
inlinenoexcept

Definition at line 169 of file thread.

◆ request_stop()

bool std::jthread::request_stop ( )
inlinenoexcept

Definition at line 230 of file thread.

◆ swap()

void std::jthread::swap ( jthread __other)
inlinenoexcept

Definition at line 176 of file thread.

Friends And Related Function Documentation

◆ swap

void swap ( jthread __lhs,
jthread __rhs 
)
friend

Definition at line 235 of file thread.


The documentation for this class was generated from the following file: