文章作者:里海
简介:
初始化的线程对象表示一个活动的执行线程; 这样的线程对象是可接合的,并且具有唯一的线程 ID。
默认构造的(未初始化的)线程对象是不可接合的,其线程 ID 对于所有不可接合的线程都是通用的。
一个可接合的线程如果结合过了,那么它就不可接合。
效果:
代码:
#include <iostream>
#include <thread>
void myThread()
{
// ...
}
int main()
{
std::thread foo;
std::thread bar(myThread);
std::cout << "构造后可结合性:\n" << std::boolalpha;
std::cout << "foo: " << foo.joinable() << '\n'; //false
std::cout << "bar: " << bar.joinable() << '\n'; //true
if (foo.joinable()) foo.join();
if (bar.joinable()) bar.join();
std::cout << "结合后可结合性:\n" << std::boolalpha;
std::cout << "foo: " << foo.joinable() << '\n';
std::cout << "bar: " << bar.joinable() << '\n';
std::cin.get();
return 0;
}