В C ++ std::thread
не управляет самим потоком выполнения. В C ++ вообще нет элементов управления для управления потоком выполнения.
std::thread
управляет дескриптором потока - идентификатором потока (thread_t
в мире Posix, который в основном был модель для std::thread
). Такой идентификатор используется для связи (как в control ) с потоком, но в C ++ единственным стандартным способом связи будет join
поток (который просто ожидает завершения потока) или detach
ing из него.
Когда вызывается деструктор std::thread
, дескриптор потока также разрушается, и дальнейшее управление потоком невозможно. Но сам поток выполнения остается и продолжает управляться реализацией (или, точнее, операционной системой).
Обратите внимание, что для неотключенных потоков std::thread
деструкторы выдают исключение, если поток не присоединился. Это просто защита от случайной потери разработчиками дескриптора потока, когда они этого не собирались.