std:: jthread
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Member functions | ||||
| Observers | ||||
| Operations | ||||
| Stop token handling | ||||
| Non-member functions | ||||
|
헤더 파일에 정의됨
<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) |
|
|
[static]
|
구현에서 지원하는 동시 스레드 수를 반환함
(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) |
|
비멤버 함수
|
(C++20)
|
std::swap
알고리즘을 특수화함
(함수) |
참고 사항
| 기능 테스트 매크로 | 값 | 표준 | 기능 |
|---|---|---|---|
__cpp_lib_jthread
|
201911L
|
(C++20) | 정지 토큰 및 조인 스레드 |
참고 항목
|
(C++11)
|
별도의 스레드를 관리함
(클래스) |