使用thread创建线程后往往也会使用join函数,这个函数的功能是阻塞当前进程,直到线程要完成的函数执行完毕。
这实际上意味着,join之后的语句在线程完成它的工作之前是不会执行的。
void fuction(int i)
{
while(1)
cout << i << endl;
}
int main()
{
thread t(fuction,0);
t.join();
return 0;
}
这段代码的功能十分简单,线程会不停地在屏幕上输出传入的参数。
在本实例中,运行结果便是屏幕上不断输出0,因为要等待线程的函数执行完毕才会执行return 0退出,所以这个程序永远不会退出。
此外,如果这里没有加join函数,那么在线程还没有执行完毕时,进程就关闭了,相关的资源也都被释放,系统会报错。