Namespaces
Variants

std:: jthread

From cppreference.net
Concurrency support library
Threads
(C++11)
jthread
(C++20)
this_thread namespace
(C++11)
(C++11)
Cooperative cancellation
Mutual exclusion
Generic lock management
Condition variables
(C++11)
Semaphores
Latches and Barriers
(C++20)
(C++20)
Futures
(C++11)
(C++11)
(C++11)
Safe reclamation
Hazard pointers
Atomic types
(C++11)
(C++20)
Initialization of atomic types
(C++11) (deprecated in C++20)
(C++11) (deprecated in C++20)
Memory ordering
(C++11) (deprecated in C++26)
Free functions for atomic operations
Free functions for atomic flags
헤더 파일에 정의됨 <thread>
class jthread ;
(C++20부터)

jthread 클래스는 단일 실행 스레드 를 나타냅니다. 이 클래스는 std::thread 와 일반적인 동작이 동일하지만, jthread 는 소멸 시 자동으로 재조인(join)되며 특정 상황에서 취소/중지될 수 있다는 점이 다릅니다.

스레드는 연관된 스레드 객체의 생성과 동시에 (OS 스케줄링 지연이 발생할 수 있음) 생성자 인자 로 제공된 최상위 함수에서 실행을 시작합니다. 최상위 함수의 반환값은 무시되며, 예외를 발생시키며 종료할 경우 std::terminate 가 호출됩니다. 최상위 함수는 그 반환값이나 예외를 호출자에게 std::promise 를 통해 전달하거나 공유 변수를 수정함으로써 전달할 수 있습니다 (이 경우 동기화가 필요할 수 있으며, std::mutex std::atomic 참조).

std::thread 와 달리, jthread 는 논리적으로 내부 비공개 멤버로 std::stop_source 타입을 보유하며, 이는 공유 중지 상태를 유지합니다. jthread 생성자는 첫 번째 인수로 std::stop_token 을 받는 함수를 수용하며, 이는 jthread 가 자체 내부 std::stop_source 로부터 전달됩니다. 이를 통해 함수는 실행 중 중지 요청이 있었는지 확인하고, 중지 요청이 있었다면 반환할 수 있습니다.

std::jthread 객체는 어떤 스레드도 나타내지 않는 상태일 수도 있습니다(기본 생성, 이동 이후, detach , 또는 join 이후). 또한 실행 스레드가 어떤 jthread 객체와도 연관되지 않을 수도 있습니다( detach 이후).

두 개의 std::jthread 객체가 동일한 실행 스레드를 나타낼 수 없습니다; std::jthread CopyConstructible 또는 CopyAssignable 이 아니지만, MoveConstructible 이고 MoveAssignable 입니다.

목차

멤버 타입

멤버 타입 정의
id std::thread::id
native_handle_type ( 선택적* ) std::thread::native_handle_type

멤버 함수

새로운 jthread 객체를 생성함
(public member function)
스레드가 조인 가능한 경우, 중단이 요청되고 스레드가 조인됨
(public member function)
jthread 객체를 이동함
(public member function)
Observers
스레드가 조인 가능한지 확인함, 즉 병렬 컨텍스트에서 실행될 수 있는지 여부
(public member function)
스레드의 id 를 반환함
(public member function)
기본 구현 정의 스레드 핸들을 반환함
(public member function)
구현에서 지원하는 동시 스레드 수를 반환함
(public static member function)
Operations
스레드 실행이 완료될 때까지 대기함
(public member function)
스레드가 스레드 핸들로부터 독립적으로 실행되도록 허용함
(public member function)
두 jthread 객체를 교환함
(public member function)
Stop token handling
스레드의 공유 중단 상태와 연관된 stop_source 객체를 반환함
(public member function)
스레드의 공유 중단 상태와 연관된 stop_token 을 반환함
(public member function)
스레드의 공유 중단 상태를 통해 실행 중단을 요청함
(public member function)

비멤버 함수

std::swap 알고리즘을 특수화함
(함수)

참고 사항

기능 테스트 매크로 표준 기능
__cpp_lib_jthread 201911L (C++20) 정지 토큰 조인 스레드

참고 항목

(C++11)
별도의 스레드를 관리함
(클래스)