id_hash

id_hash (std::thread::id 해시 특수화)

이 페이지는 std::thread::id 클래스에 대한 std::hash 템플릿 특수화를 설명해요. 이 특수화를 통해 스레드 식별자의 해시 값을 얻을 수 있고, 해시 기반 컨테이너에서 스레드 ID를 키로 사용할 수 있게 돼요. C++11부터 사용할 수 있어요.

출처: cppreference

본문

헤더에 정의됨
template <> struct hash < std :: thread :: id > ; since C++11

std::thread::id에 대한 std::hash 템플릿 특수화는 스레드 식별자의 해시 값을 얻을 수 있게 해줘요. 이 특수화는 표준 해시 함수 객체의 요구 사항을 충족하므로, std::unordered_map이나 std::unordered_set 같은 해시 기반 자료구조에서 스레드 ID를 사용할 수 있어요.

예제

이 섹션은 불완전해요. 이유: 해시를 의미 있게 사용하는 예제가 필요해요.
#include <chrono>
#include <iostream>
#include <thread>
#include <vector>
using namespace std::chrono_literals;

void foo()
{
    std::this_thread::sleep_for(10ms);
}
 
int main()
{
    std::vector<std::thread> v;
    for (int n = 0; n < 4; ++n)
        v.emplace_back(foo);

    std::hash<std::thread::id> hasher;
    for (auto& t : v)
    {
        std::cout << "thread " << t.get_id() << " hashes to "
                  << hasher(t.get_id()) << '\n';
        t.join();
    }
}

가능한 출력:

thread 139786440144640 hashes to 8905351942358389397
thread 139786431751936 hashes to 9222844670065909738
thread 139786423359232 hashes to 18199000599186780501
thread 139786414966528 hashes to 15386662774029264672

같이 보기

  • hash (C++11) — 해시 함수 객체 (클래스 템플릿)

더 알아보기 (Learn more)

cppreference