C++多线程的简单使用

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()方法,不等待子线程运行完成,将线程与调用其的线程分离,彼此独立。当主线程睡眠三秒之后,继续执行下面的代码。
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值