thread_get_id
thread_get_id (현재 스레드의 ID 얻기)
이 함수는 현재 실행 중인 스레드의 고유 식별자를 반환해요. std::this_thread::get_id()는 C++11부터 사용할 수 있고, 스레드가 자신의 ID를 확인하거나 로그를 남길 때 유용해요. 반환되는 std::thread::id는 스레드마다 고유하며 비교와 해시가 가능해요.
출처: cppreference
본문
정의
<thread> 헤더에 정의되어 있어요. std::this_thread::get_id()는 현재 스레드의 ID를 반환해요. 이 함수는 예외를 던지지 않아요 (noexcept).
매개변수
(없음)
반환값
현재 스레드의 std::thread::id를 반환해요. 만약 현재 스레드가 없거나 유효하지 않은 경우에는 기본 생성된 std::thread::id가 반환될 수 있어요.
예제
다음 예제는 두 개의 스레드를 만들고 각 스레드가 자신의 ID를 출력한 뒤 잠시 잠드는 코드예요.
#include <chrono>
#include <iostream>
#include <syncstream>
#include <thread>
using namespace std::chrono_literals;
void foo()
{
std::thread::id this_id = std::this_thread::get_id();
std::osyncstream(std::cout) << "thread " << this_id << " sleeping...\n";
std::this_thread::sleep_for(500ms);
}
int main()
{
std::jthread t1{foo};
std::jthread t2{foo};
}
가능한 출력:
thread 140113018054400 sleeping...
thread 140113009661696 sleeping...
출력되는 ID 값은 시스템과 실행 환경에 따라 달라질 수 있어요. std::osyncstream을 사용하면 여러 스레드가 동시에 출력해도 서로 섞이지 않아요.
같이 보기
get_id—std::thread의 공개 멤버 함수로 해당 스레드의 ID를 반환해요.- C 문서의
thrd_current— C 언어에서 현재 스레드 ID를 얻는 함수예요.