C++ check if thread is joinable
To check if a thread is joinable in C++, you can use the joinable()
member function of the std::thread
class. Here are the steps to do it:
- Create an instance of the
std::thread
class and pass the function or callable object you want to run in a separate thread as a parameter to the constructor. - Use the
joinable()
member function to check if the thread is joinable. - If the thread is joinable, it means that it has not been joined or detached yet, and you can safely call the
join()
member function to wait for the thread to finish execution. - If the thread is not joinable, it means that it has already been joined or detached, and calling
join()
will result in undefined behavior.
Here is an example that demonstrates how to check if a thread is joinable in C++:
#include <iostream>
#include <thread>
void threadFunction()
{
// Do some work...
}
int main()
{
std::thread myThread(threadFunction);
if (myThread.joinable())
{
std::cout << "Thread is joinable." << std::endl;
myThread.join();
}
else
{
std::cout << "Thread is not joinable." << std::endl;
}
return 0;
}
In the above example, we create a std::thread
called myThread
and pass the threadFunction
as a parameter to the constructor. We then use the joinable()
function to check if myThread
is joinable. If it is, we print "Thread is joinable" and call join()
to wait for the thread to finish. If it is not joinable, we print "Thread is not joinable".
This is a basic example of how to check if a thread is joinable in C++. You can modify it according to your specific use case.