33 Thread support library [thread]

33.3 Threads [thread.threads]

33.3.2 Class thread [thread.thread.class]

33.3.2.1 Class thread​::​id [thread.thread.id]

namespace std {
  class thread::id {
  public:
      id() noexcept;
  };

  bool operator==(thread::id x, thread::id y) noexcept;
  bool operator!=(thread::id x, thread::id y) noexcept;
  bool operator<(thread::id x, thread::id y) noexcept;
  bool operator<=(thread::id x, thread::id y) noexcept;
  bool operator>(thread::id x, thread::id y) noexcept;
  bool operator>=(thread::id x, thread::id y) noexcept;

  template<class charT, class traits>
    basic_ostream<charT, traits>&
      operator<< (basic_ostream<charT, traits>& out, thread::id id);

  // Hash support
  template <class T> struct hash;
  template <> struct hash<thread::id>;
}

Объект типа thread​::​id предоставляет уникальный идентификатор для каждого потока выполнения и одно отличное значение для всех thread объектов, которые не представляют поток выполнения ([thread.thread.class]). Каждый поток выполнения имеет связанный thread​::​id объект, который не равен thread​::​id объекту любого другого потока выполнения и который не равен thread​::​id объекту любого thread объекта, который не представляет потоки выполнения.

thread​::​id должен быть trivially copyable class. Библиотека может повторно использовать значение thread​::​id завершенного потока, который больше не может быть присоединен.

[ Note: Операторы отношения позволяют использовать thread​::​id объекты в качестве ключей в ассоциативных контейнерах. ] end note

id() noexcept;

Effects: Создает объект типа id.

Postconditions: Созданный объект не представляет собой поток выполнения.

bool operator==(thread::id x, thread::id y) noexcept;

Returns: true только в том случае, если x и y представляют один и тот же поток выполнения или не представляют x ни y один поток выполнения.

bool operator!=(thread::id x, thread::id y) noexcept;

Returns: !(x == y)

bool operator<(thread::id x, thread::id y) noexcept;

Returns: Такое значение, которое operator< представляет собой общий порядок, как описано в [alg.sorting].

bool operator<=(thread::id x, thread::id y) noexcept;

Returns: !(y < x).

bool operator>(thread::id x, thread::id y) noexcept;

Returns: y < x.

bool operator>=(thread::id x, thread::id y) noexcept;

Returns: !(x < y).

template<class charT, class traits> basic_ostream<charT, traits>& operator<< (basic_ostream<charT, traits>& out, thread::id id);

Effects: Вставляет неопределенное текстовое представление id в out. Для двух объектов типа thread​::​id x и y, если x == y эти thread​::​id объекты будут иметь то же текстовое представление , и если x != y эти thread​::​id объекты имеют различные текстовые представления.

Returns: out.

template <> struct hash<thread::id>;

Специализация включена ([unord.hash]).