Пространства имён
Варианты
Действия

std::hash<std::thread::id>

Материал из cppreference.com
 
 
Библиотека поддержки конкуренции
Ветви
(C++11)
(C++20)
(C++20)
Пространство имён this_thread
(C++11)
(C++11)
(C++11)
Атомарные типы
(C++11)
(C++20)
Инициализация атомарных типов
(C++11)(устарело в C++20)
(C++11)(устарело в C++20)
(C++11)(устарело в C++20)
Функции освобождения для атомарных операций
Функции освобождения для атомарных флагов
Упорядочивание памяти
Взаимное исключение
(C++11)
Общее управление блокировкой
(C++11)
(C++11)
(C++11)
(C++11)(C++11)(C++11)
(C++11)
(C++11)
Условные переменные
(C++11)
Семафоры
Защёлки и барьеры
(C++20)
(C++20)
Фьючерсы
(C++11)
(C++11)
(C++11)
(C++11)
 
std::thread
Классы-элементы
Функции-элементы
Наблюдатели
Операции
Функции, не являющиеся элементами
 
std::thread::id
Функции-элементы
Функции, не являющиеся элементами
(до C++20)(до C++20)(до C++20)(до C++20)(до C++20)(C++20)
Вспомогательные классы
 
<tbody> </tbody>
Определено в заголовочном файле <thread>
template<> struct hash<std::thread::id>;
(начиная с C++11)

Специализация шаблона std::hash для класса std::thread::id позволяет пользователям получать хэши идентификаторов потоков.

Пример

#include <iostream>
#include <thread>
#include <chrono>
#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 << "поток " << t.get_id() << " даёт хэш " << hasher(t.get_id()) << '\n';
        t.join();
    }
}

Возможный вывод:

поток 139786440144640 даёт хэш 8905351942358389397
поток 139786431751936 даёт хэш 9222844670065909738
поток 139786423359232 даёт хэш 18199000599186780501
поток 139786414966528 даёт хэш 15386662774029264672

Смотрите также

(C++11)
Объект хеш-функции
(шаблон класса) [править]