|
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
bool joinable()constnoexcept; | (since C++11) | |
Checks if thestd::thread object identifies an active thread of execution. Specifically, returnstrue ifget_id()!=std::thread::id(). So a default constructedthread is not joinable.
A thread that has finished executing code, but has not yet been joined is still considered an active thread of execution and is therefore joinable.
Contents |
(none)
true if thestd::thread object identifies an active thread of execution,false otherwise.
#include <chrono>#include <iostream>#include <thread>usingnamespace std::chrono_literals; void foo(){std::this_thread::sleep_for(500ms);} int main(){std::cout<<std::boolalpha; std::thread t;std::cout<<"before starting, joinable: "<< t.joinable()<<'\n'; t=std::thread{foo};std::cout<<"after starting, joinable: "<< t.joinable()<<'\n'; t.join();std::cout<<"after joining, joinable: "<< t.joinable()<<'\n'; t=std::thread{foo}; t.detach();std::cout<<"after detaching, joinable: "<< t.joinable()<<'\n';std::this_thread::sleep_for(1500ms);}
Output:
before starting, joinable: falseafter starting, joinable: trueafter joining, joinable: falseafter detaching, joinable: false
| returns theid of the thread (public member function)[edit] | |
| waits for the thread to finish its execution (public member function)[edit] | |
| permits the thread to execute independently from the thread handle (public member function)[edit] |