C++11threaddetach(2)
原文地址:http://www.cplusplus.com/reference/thread/thread/detach/
public member function
std::thread::detach
void detach();
Detach thread
Detaches the thread represented by the object from the calling thread, allowing them to execute independently from each other.
将本线程从调用线程中分离出来,允许本线程独立执行。(但是当主进程结束的时候,即便是detach()出去的子线程不管有没有完成都会被强制杀死)
例子:
#include
#include
#include
#include
#include
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){
ofstream fout(“detach.txt”);
if(!fout.is_open())
cout<<”open failed!”<<endl;
while(n>0){
fout<<”1currentThread is “<<pthread_self()<<”,Now n is “<<n<<endl;
delay(0.2);
n–;
}
fout<<”ok”<<endl;
fout.close();
}
int main()
{
cout<<”main starts”<<endl;
thread t(show,100);
t.detach();
delay(1);
cout<<”main complete!”<<endl;
}
运行截图:
可以看出,当进程结束的时候,即便detach没有完成任务也会被强制杀死。
Both threads continue without blocking nor synchronizing in any way. Note that when either one ends execution, its resources are released.
两个线程不会堵塞也不会同步,注意他们任一一个结束的时候,所持有的资源将会被释放。
After a call to this function, the thread object becomes non-joinable and can be destroyed safely.
调用该方法后,该线程对象变得不可连接以及可以安全地销毁。
例子:
Parameters
none
Return value
none
Example
1 | 1 |
1 | #include <iostream> // std::cout |
Output (after 5 seconds):
Spawning and detaching 3 threads…
Done spawning threads.
(the main thread will now pause for 5 seconds)
pause of 1 seconds ended
pause of 2 seconds ended
pause of 3 seconds ended
pause of 5 seconds ended
Data races
The object is modified.
Exception safety
Basic guarantee: if an exception is thrown by this member function, the thread object is left in a valid state.
If the call fails, a system_error exception is thrown:
exception type
error condition
description
The thread object is not joinable
The thread object is not valid
—————————————————————————————————————————————————————————————————
//写的错误或者不好的地方请多多指导,可以在下面留言或者点击左上方邮件地址给我发邮件,指出我的错误以及不足,以便我修改,更好的分享给大家,谢谢。
转载请注明出处:http://blog.csdn.net/qq844352155
author:天下无双
Email:coderguang@gmail.com
2014-9-3
于GDUT
——————————————————————————————————————————————————————————————————
- 本文作者: royalchen
- 本文链接: http://www.royalchen.com/2016/02/24/c11threaddetach2/
- 版权声明: 本博客所有文章除特别声明外,均采用 MIT 许可协议。转载请注明出处!