Spec-Zone.ru › C++

std::jthread::detach

void detach();
(since C++20)

Отделяет поток выполнения от объекта jthread, позволяя ему продолжить выполнение независимо. Все выделенные ресурсы будут освобождены после завершения потока.

После вызова detach *this больше не владеет ничем потоком.

Параметры

(нет)

Возвращаемое значение

(нет)

Последовательные условия

joinable является false.

Исключение

Возникает std::system_error, если joinable() == false или произошла ошибка.

Пример

#include <chrono>
#include <iostream>
#include <thread>
 
void independentThread() 
{
    std::cout << "Starting concurrent thread.\n";
    std::this_thread::sleep_for(std::chrono::seconds(2));
    std::cout << "Exiting concurrent thread.\n";
}
 
void threadCaller() 
{
    std::cout << "Starting thread caller.\n";
    std::jthread t(independentThread);
    t.detach();
    std::this_thread::sleep_for(std::chrono::seconds(1));
    std::cout << "Exiting thread caller.\n";
}
 
int main() 
{
    threadCaller();
    std::this_thread::sleep_for(std::chrono::seconds(5));
}

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

Starting thread caller.
Starting concurrent thread.
Exiting thread caller.
Exiting concurrent thread.

Ссылки

  • Стандарт C++23 (ISO/IEC 14882:2023):
    • 33.4.4.3 Члены [thread.jthread.mem]
  • Стандарт C++20 (ISO/IEC 14882:2020):
    • 32.4.3.2 Члены [thread.jthread.mem]

См. также

join
ожидает завершения потока
(публичный член-функция)
joinable
проверяет, может ли поток быть объединен, т.е. потенциально выполняется в параллельном контексте
(публичный член-функция)
C документация для thrd_detach

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/thread/jthread/detach

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API