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) — 해시 함수 객체 (클래스 템플릿)