std::thread::detach

From cppreference.com
void detach();
(since C++11)

Separates the thread of execution from the thread object, allowing execution to continue independently. Any allocated resources will be freed once the thread exits.

After calling detach, the following conditions will hold:

  • *this no longer owns any thread
  • joinable() == false
  • get_id() == std::thread::id()

Contents

[edit] Parameters

(none)

[edit] Return value

(none)

[edit] Exceptions

std::system_error if joinable() == false or an error occurs.

[edit] Example

#include <iostream>
#include <chrono>
#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::thread 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));
}

Possible output:

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

[edit] See also

waits for a thread to finish its execution
(public member function)
checks whether the thread is joinable, i.e. potentially running in parallel context
(public member function)