1、C++多线程
多线程是多任务处理的一种特殊形式,多任务处理允许让电脑同时运行两个或两个以上的程序。一般情况下,两种类型的多任务处理:基于进程和基于线程。
1.1常用成员函数
- void join() 等待线程结束并清理资源(会阻塞)
- bool joinable() 返回线程是否可以执行join函数
- void detach() 将线程与调用其的线程分离,彼此独立执行
- std::thread::id get_id() 获取线程id
- thread& operator=(thread &&rhs) 见移动构造函数
1.2 头文件
#include<thread>
2、简单使用
2.1 用join方法
#include <iostream>
#include<string>
#include<thread> //1、添加头文件
using namespace std;
static bool isActivity = true;
void printstr(string a) {
while (isActivity)
{
std::cout << a << "Hello Thread,我是子线程!\n";
std::this_thread::sleep_for(std::chrono::microseconds(500));
}
}
int main()
{
std::thread t(printstr, "11111");
t.join(); //等待子线程做完才到下一步,等待线程结束并清理资源(会阻塞)
//t.detach();//分离,不等待子线程运行完成,将线程与调用其的线程分离,彼此独立执行
std::this_thread::sleep_for(std::chrono::seconds(3));
isActivity = false; //让子线程跑3秒,就关闭
std::cout << "Hello World,我是主线程!\n";
return 0;
}
程序将会一直在子线程里面跑,不会跑到t.join 后面主线程的代码。
2.1 用detach方法
使用detach()方法,不等待子线程运行完成,将线程与调用其的线程分离,彼此独立。当主线程睡眠三秒之后,继续执行下面的代码。