# std::thread::detach

From cppreference.com
< cpp‎ | thread‎ | thread

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` *this no longer owns any thread.

### Parameters

(none)

### Return value

(none)

### Postconditions

joinable is false

### Exceptions

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

### Example

Run this code

    #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.

### References

- C++11 standard (ISO/IEC 14882:2011):

  - 30.3.1.5 thread members [thread.thread.member]

### See also

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

Retrieved from "https://en.cppreference.com/mwiki/index.php?title=cpp/thread/thread/detach&oldid=90289"