#include "iostream"
#include "thread"
#include "windows.h"
using namespace::std;
void func(int bh,const string & str)
{cout<<"子线程:"<<this_thread::get_id()<<endl;
for (int ii = 0; ii < 5; ++ii) {
cout<<"第"<<ii<<"次表白:亲爱的"<<bh<<"号。"<<str <<endl;
//Sleep(1000);//休眠一秒。
this_thread::sleep_for(chrono::seconds(1));//休眠一秒
}
}
int main()
{
thread t1(func,1,"我是一傻傻鸟。");
thread t2(func,2,"我是一傻傻鸟。");
//子线程结束以后,系统自动回收,但主线程不可以提前退出。
// t1.detach();
// t2.detach();
cout<<"任务开始。\n";
for (int ii=0;ii<6;ii++) {
cout<<"执行任务中.......\n";
Sleep(1000);//假设执行任务的需要的时间。
}
cout<<"任务完成。\n";
cout<<"主线程:"<<this_thread::get_id()<<endl;
cout<<"线程1:"<<t1.get_id()<<endl;
cout<<"线程2:"<<t2.get_id()<<endl;
t1.swap(t2);
cout<<"线程1:"<<t1.get_id()<<endl;
cout<<"线程2:"<<t2.get_id()<<endl;
thread t3=move(t2);//线程没有拷贝构造函数
t1.join();//回收线程t1的资源。
t3.join();//回收线程t2的资源。
return 0;
}
任务开始。
执行任务中…….
子线程:2
第0子线程:次表白:亲爱的13号。我是一傻傻鸟。
第0次表白:亲爱的2号。我是一傻傻鸟。
第执行任务中…….
第11次表白:亲爱的次表白:亲爱的12号。号。我是一傻傻鸟。我是一傻傻鸟。
第2次表白:亲爱的1号。我是一傻傻鸟。
第2执行任务中…….
次表白:亲爱的2号。我是一傻傻鸟。
第第3执行任务中…….
3次表白:亲爱的2号。我是一傻傻鸟。
次表白:亲爱的1号。我是一傻傻鸟。
第第4次表白:亲爱的2号。我是一傻傻鸟。
执行任务中…….
4次表白:亲爱的1号。我是一傻傻鸟。
执行任务中…….
任务完成。
主线程:1
线程1:2
线程2:3
线程1:3
线程2:2
发表回复