|
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Member functions | ||||
| Observers | ||||
| Operations | ||||
jthread::detach | ||||
| Stop token handling | ||||
| Non-member functions | ||||
void detach(); | (since C++20) | |
Separates the thread of execution from the jthread object, allowing execution to continue independently. Any allocated resources will be freed once the thread exits.
After callingdetach*this no longer owns any thread.
Contents |
(none)
(none)
joinable isfalse.
std::system_error ifjoinable()==false or an error occurs.
#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));}
Possible output:
Starting thread caller.Starting concurrent thread.Exiting thread caller.Exiting concurrent thread.
| waits for the thread to finish its execution (public member function)[edit] | |
| checks whether the thread is joinable, i.e. potentially running in parallel context (public member function)[edit] | |
C documentation forthrd_detach | |