cpp
复制代码
#include <iostream>
#include <thread>
#include <string>
#include <functional>
#include <unistd.h>
using namespace std;
/*
* 1.创建线程和join
* 2.detach分离线程
* 3.线程传递参数
* 4.获取线程id
* 5.线程休眠
* 6.结束线程
* */
void show(){
for (int i = 0; i < 3; ++i) {
cout << __func__ << "=" << i << endl;
this_thread::sleep_for(chrono::seconds(1));
}
}
class stu{
public:
string name;
int age;
stu(const string &name,int age):name(name),age(age){
cout << "构造函数"<< name << age << endl;
}
void work(string name,int age){
cout << "执行学生工作"<< endl;
stu s(name,age);
}
};
void print(){
cout << "meet to---"<< endl;
}
void call(){
for (int i = 0; i < 3; ++i) {
cout << "呼叫"<<i << endl;
usleep(1000*1000);
}
}
void sendMsg(){
for (int i = 0; i < 5; ++i) {
if(i==3){
cout<< "线程终止"<< endl;
return;
}
}
}
int main() {
thread t(show);
cout << "执行main"<<endl;
t.join();
thread t2(show);
t2.detach();
stu s("小明",16);
thread t3(bind(&stu::work,&s,s.name,s.age));
this_thread::sleep_for(chrono::seconds(5));
t3.join();
cout << "主线程id="<<this_thread::get_id << endl;
thread t4(print);
t4.get_id();
t4.join();
thread t5(call);
t5.join();
thread t6(sendMsg);
t6.join();
return 0;
}