std::thread
std::thread (스레드)
std::thread는 C++ 표준 라이브러리에서 단일 실행 스레드를 나타내는 클래스예요. 이 페이지에서는 std::thread의 생성, 소멸, 관찰자(observer), 연산(operation) 함수와 관련된 내용을 다뤄요.
출처: cppreference
본문
<thread> 헤더에 정의되어 있어요.
Defined in header <thread> |
||
|---|---|---|
| class thread; | (since C++11) |
std::thread 클래스는 단일 실행 스레드를 나타내요. 스레드를 사용하면 여러 함수를 동시에 실행할 수 있어요.
스레드는 연결된 thread 객체가 생성되는 즉시 실행을 시작해요 (운영체제의 스케줄링 지연이 있을 수는 있어요). 생성자 인자로 제공된 최상위 함수부터 시작해요. 최상위 함수의 반환값은 무시되며, 예외를 던지며 종료되면 std::terminate가 호출돼요. 최상위 함수는 std::promise를 통해 호출자에게 반환값이나 예외를 전달하거나, 공유 변수를 수정해서 전달할 수 있어요 (이 경우 동기화가 필요할 수 있으며, std::mutex와 std::atomic을 참고하세요).
std::thread 객체는 어떤 스레드도 나타내지 않는 상태일 수도 있어요 (기본 생성, 이동, detach, join 이후). 또한 실행 스레드가 어떤 thread 객체와도 연결되지 않을 수도 있어요 (detach 이후).
두 개의 std::thread 객체가 동일한 실행 스레드를 나타낼 수는 없어요. std::thread는 복사 생성(CopyConstructible)이나 복사 대입(CopyAssignable)이 불가능하지만, 이동 생성(MoveConstructible)과 이동 대입(MoveAssignable)은 가능해요.
멤버 타입 (Member types)
| 멤버 타입 | 정의 |
|---|---|
| native_handle_type (선택 사항*) | 구현 정의 |
멤버 클래스 (Member classes)
| 클래스 | 설명 |
|---|---|
| id | 스레드의 id를 나타내는 공개 멤버 클래스 |
멤버 함수 (Member functions)
| 함수 | 설명 |
|---|---|
| (생성자) | 새로운 thread 객체를 생성해요 |
| (소멸자) | thread 객체를 소멸하며, 기본 스레드는 join 또는 detach되어야 해요 |
| operator= | thread 객체를 이동시켜요 |
| 관찰자 (Observers) | |
| joinable | 스레드가 join 가능한 상태인지, 즉 병렬 컨텍스트에서 실행 중일 가능성이 있는지 확인해요 |
| get_id | 스레드의 id를 반환해요 |
| native_handle | 구현 정의된 기본 스레드 핸들을 반환해요 |
| hardware_concurrency [static] | 구현이 지원하는 동시 스레드 수를 반환해요 |
| 연산 (Operations) | |
| join | 스레드가 실행을 마칠 때까지 기다려요 |
| detach | 스레드가 thread 핸들과 독립적으로 실행되도록 허용해요 |
| swap | 두 thread 객체를 교환해요 |
비멤버 함수 (Non-member functions)
| 함수 | 설명 |
|---|---|
| std::swap (std::thread) (C++11) | std::swap 알고리즘을 특수화해요 |
같이 보기 (See also)
| 항목 | 설명 |
|---|---|
| jthread (C++20) | 자동 join 및 취소를 지원하는 std::thread |