33 Thread support library [thread]

33.3 Threads [thread.threads]

33.3.2 Class thread [thread.thread.class]

33.3.2.5 thread members [thread.thread.member]

void swap(thread& x) noexcept;

Effects: Меняет местами состояние *this и x.

bool joinable() const noexcept;

Returns: get_­id() != id().

void join();

Effects:  Блокируется до тех пор, пока поток, представленный значком, *this не будет завершен.

Synchronization: Завершение потока, представленное *this synchronizes with соответствующим успешным join() возвратом. [ Note: Операции на *this не синхронизированы. ] end note

Postconditions: Цепочка, представленная *this значком, завершена. get_­id() == id().

Throws: system_­error когда требуется исключение ([thread.req.exception]).

Error conditions:

  • resource_­deadlock_­would_­occur - при обнаружении тупика или get_­id() == this_­thread​::​​get_­id().

  • no_­such_­process - если нить недействительна.

  • invalid_­argument - если поток не может быть присоединен.

void detach();

Effects: Поток, представленный как, *this продолжает выполнение без блокировки вызывающего потока. Когда detach() возвращается, *this больше не представляет собой возможно продолжающийся поток выполнения. Когда поток, ранее представленный как *this завершает выполнение, реализация должна освободить все принадлежащие ей ресурсы.

Postconditions: get_­id() == id().

Throws: system_­error когда требуется исключение ([thread.req.exception]).

Error conditions:

  • no_­such_­process - если нить недействительна.

  • invalid_­argument - если поток не может быть присоединен.

id get_id() const noexcept;

Returns: Созданный по умолчанию id объект, если *this он не представляет поток, в противном случае this_­thread​::​get_­id() для потока выполнения, представленного *this.