thread
수업
애플리케이션 내의 실행 스레드를 관찰하고 관리하는 데 사용되는 개체를 정의합니다.
구문
class thread;
설명
thread
개체를 사용하면 애플리케이션 내의 실행 스레드를 관찰하고 관리할 수 있습니다.
thread
기본 생성자를 사용하여 만든 개체는 실행 스레드와 연결되지 않습니다.
thread
호출 가능한 개체를 사용하여 생성된 개체는 새 실행 스레드를 만들고 해당 thread
개체에서 호출 가능한 개체를 호출합니다.
Thread
개체는 이동할 수 있지만 복사할 수 없으므로 실행 스레드를 하나의 thread
개체에만 연결할 수 있습니다.
모든 실행 스레드에는 thread::id
형식의 고유 식별자가 있습니다.
this_thread::get_id
함수는 호출 스레드의 식별자를 반환합니다. 멤버 함수 thread::get_id
는 개체에서 관리하는 thread
스레드의 식별자를 반환합니다. 기본 생성 thread
개체 thread::get_id
의 경우 메서드는 호출 시 조인할 수 있는 모든 실행 스레드에 대해 반환되는 thread
값과 다른 모든 기본 생성 this_thread::get_id
개체에 대해 동일한 값을 가진 개체를 반환합니다.
멤버
public 클래스
속성 | 설명 |
---|---|
id |
관련 스레드를 고유하게 식별합니다. |
공용 생성자
속성 | 설명 |
---|---|
thread |
thread 개체를 생성합니다. |
공용 메서드
속성 | 설명 |
---|---|
detach |
thread 개체에서 관련 스레드를 분리합니다. |
get_id |
관련 스레드의 고유 식별자를 반환합니다. |
hardware_concurrency |
정적. 하드웨어 스레드 컨텍스트 수의 추정치를 반환합니다. |
join |
관련 스레드가 완료될 때까지 차단합니다. |
joinable |
관련 스레드가 조인 가능한지를 지정합니다. |
native_handle |
뮤텍스 핸들을 나타내는 구현별 형식을 반환합니다. |
swap |
개체 상태를 지정된 thread 개체와 바꿉니다. |
Public 연산자
속성 | 설명 |
---|---|
thread::operator= |
현재 thread 개체에 스레드를 연결합니다. |
요구 사항
머리글:<thread>
네임스페이스:std
detach
관련 스레드를 분리합니다. 종료 시에는 운영 체제가 스레드 리소스를 해제합니다.
void detach();
설명
호출 detach
후 , 후속 호출을 반환get_id
합니다id
.
호출 개체와 연결된 스레드를 조인할 수 없는 경우 함수는 오류 코드system_error
가 있는 invalid_argument
스레드를 throw합니다.
호출 개체와 연결된 스레드가 유효하지 않으면 함수는 오류 코드system_error
가 있는 no_such_process
스레드를 throw합니다.
get_id
연결된 스레드에 대한 고유 식별자를 반환합니다.
id get_id() const noexcept;
반환 값
id
연결된 스레드를 고유하게 식별하는 개체이거나 id()
개체와 연결된 스레드가 없는 경우
hardware_concurrency
하드웨어 스레드 컨텍스트 수의 추정치를 반환하는 정적 메서드입니다.
static unsigned int hardware_concurrency() noexcept;
반환 값
하드웨어 스레드 컨텍스트 수의 추정치입니다. 값을 계산할 수 없거나 잘 정의되지 않은 경우 이 메서드는 0을 반환합니다.
Microsoft 전용
hardware_concurrency
는 동시에 실행할 수 있는 하드웨어 스레드 수에 해당하는 논리 프로세서 수를 반환합니다. 물리적 프로세서의 수, 각 물리적 프로세서의 코어 수 및 각 단일 코어의 동시 다중 스레딩을 고려합니다.
Windows 11 및 Windows Server 2022 이전에는 애플리케이션이 기본적으로 단일 프로세서 그룹으로 제한되었으며 최대 64개의 논리 프로세서가 있습니다. 이렇게 하면 동시에 실행되는 스레드 수가 64개로 제한되었습니다. 자세한 내용은 프로세서 그룹을 참조 하세요.
Windows 11 및 Windows Server 2022부터 프로세스와 해당 스레드에는 기본적으로 시스템의 모든 프로세서와 64개 이상의 프로세서가 있는 컴퓨터의 여러 그룹에 걸쳐 있는 프로세서 친화성이 있습니다. 동시 스레드 수에 대한 제한은 이제 시스템의 총 논리 프로세서 수입니다.
id
클래스
프로세스에서 각 실행 스레드에 대한 고유 식별자를 반환합니다.
class thread::id {
id() noexcept;
};
설명
기본 생성자는 기존 스레드의 개체와 같지 thread::id
않은 개체를 만듭니다.
모든 기본 생성 thread::id
개체의 비교 결과는 같습니다.
join
호출 개체와 연결된 실행 스레드가 완료될 때까지 차단합니다.
void join();
설명
호출이 성공하면 호출 개체에 get_id
대한 후속 호출은 기존 스레드와 같지 thread::id
않은 기본값 thread::id
을 반환합니다. 호출이 성공하지 않으면 반환되는 get_id
값은 변경되지 않습니다.
joinable
관련 스레드가 조인 가능한지를 지정합니다.
bool joinable() const noexcept;
반환 값
true
연결된 스레드를 조인할 수 있으면 이고, 그렇지 않으면 . false
설명
경우 스레드 개체를 조인할 수 있습니다 get_id() != id()
.
native_handle
뮤텍스 핸들을 나타내는 구현별 형식을 반환합니다. 스레드 핸들은 구현별 방식으로 사용할 수 있습니다.
native_handle_type native_handle();
반환 값
native_handle_type
는 Win32 HANDLE
캐스트 void *
로 정의됩니다.
thread::operator=
지정한 개체의 스레드를 현재 개체에 연결합니다.
thread& operator=(thread&& Other) noexcept;
매개 변수
Other
thread
개체입니다.
반환 값
*this
설명
호출 개체가 조인 가능하면 메서드는 detach를 호출합니다.
연결이 설정되면 Other
는 기본 생성 상태로 설정됩니다.
swap
개체 상태를 지정된 thread
개체의 상태와 바꿉니다.
void swap(thread& Other) noexcept;
매개 변수
Other
thread
개체입니다.
thread
생성자
thread
개체를 생성합니다.
thread() noexcept;
template <class Fn, class... Args>
explicit thread(Fn&& F, Args&&... A);
thread(thread&& Other) noexcept;
매개 변수
F
스레드에서 실행할 애플리케이션 정의 함수입니다.
A
F
에 전달할 인수의 목록
Other
기존 thread
개체입니다.
설명
첫 번째 생성자는 실행 스레드와 연결되지 않는 개체를 생성합니다. 생성된 개체에 대해 반환되는 get_id
값은 .입니다 thread::id()
.
두 번째 생성자는 새 실행 스레드와 연결된 개체를 생성합니다. 에 정의된 의사 함수 INVOKE
를 실행합니다 <functional>
. 새 스레드를 시작하는 데 사용할 수 있는 리소스가 충분하지 않은 경우 함수는 오류 코드system_error
가 있는 resource_unavailable_try_again
개체를 throw합니다. catch되지 않은 예외 F
로 종료되는 terminate
호출이 호출됩니다.
F
호출하면 ExitThread
또는 _endthreadex
호출하는 등 스레드가 조기에 종료되어서는 안됩니다.
세 번째 생성자는 Other
에 연결된 스레드와 연결되는 개체를 생성합니다. 그러면 Other
는 기본 생성 상태로 설정됩니다.