home | help
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 mem-
     ber of type
	std::stop_source,  which maintains a shared stop-state. The jthread con-
     structor
	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 MoveCon-
     structible 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.  poten-
     tially 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)

http://cppreference.com 	   2024.06.10			 std::jthread(3)

home | help