标签:des style blog http color os io ar strong
void join();
当该线程执行完成后才返回。(即等待子线程执行完毕才继续执行主线程)
该函数的返回与子线程执行完毕同步,该函数会阻塞调用该函数的线程直到子线程调用完毕。
例子:
#include <iostream> #include <thread> #include <vector> #include <ctime> using namespace std; //delay(n) 延时n秒 void delay(double sec) { time_t start_time, cur_time; // 变量声明 time(&start_time); do { time(&cur_time); }while((cur_time - start_time) < sec ); }; void show(int n){ while(n>5){ cout<<"currentThread is "<<pthread_self()<<",Now n is "<<n<<endl; delay(1); n--; } } int main() { cout<<"main starts"<<endl; thread t2(show,10); //t2.join(); cout<<"main complete!"<<endl; }运行截图:
可以看到,t2还没有执行完毕就已经结束了。
加上t2.join()之后的执行结果:
可以看到,阻塞了主线程,等待t2执行完毕才继续执行main线程。
调用该函数后,子线程对象变成non-joinable以及可以安全地销毁。
|
|
Spawning 3 threads...
Done spawning threads. Now waiting for them to join:
pause of 1 seconds ended
pause of 2 seconds ended
pause of 3 seconds ended
All threads joined!
|
exception type | error condition | description |
---|---|---|
system_error | errc::invalid_argument | - The thread object is not joinable |
system_error | errc::no_such_process | - The thread object is not valid |
system_error | errc::resource_deadlock_would_occur | - The current thread is the same as the thread attempted to join, or - A deadlock was detected (implementations may detect certain cases of deadlock). |
Note that if the thread represented by the object terminates with an uncaught exception, this cannot be caught by the current thread, and terminate()
is
automatically called.
—————————————————————————————————————————————————————————————————
//写的错误或者不好的地方请多多指导,可以在下面留言或者点击左上方邮件地址给我发邮件,指出我的错误以及不足,以便我修改,更好的分享给大家,谢谢。
转载请注明出处:http://blog.csdn.net/qq844352155
author:天下无双
Email:coderguang@gmail.com
2014-9-4
于GDUT
——————————————————————————————————————————————————————————————————
标签:des style blog http color os io ar strong
原文地址:http://blog.csdn.net/qq844352155/article/details/39049475