Spec-Zone.ru › C++

std::jthread::detach

void detach();
(начиная с 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:2024):
    • 33.4.4.3 Members [thread.jthread.mem]
  • Стандарт C++20 (ISO/IEC 14882:2020):
    • 32.4.3.2 Members [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/cpp/thread/jthread/detach

Spec-Zone.ru

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