C++多线程std::thread

C++多线程std::thread


一、线程要点

示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。

  • 使用多线程,要添加头文件#include < thread>;
  • 创建一个线程对象:std::thread worker(函数指针);
  • 等待一个线程完成它的工作:worker.join();
  • 需要同时做多件事情时,将用到线程。线程的主要目的就是优化。

二、代码示例

	static bool s_Finished = false;

	void Dowork() {
		using namespace std::literals::chrono_literals;
		std::cout << "Dowork thread id:" << std::this_thread::get_id() << std::endl;  //输出当前线程id
		while (!s_Finished) {
			std::cout << "Working……" << std::endl;
			std::this_thread::sleep_for(1s); //等待一秒
		}
	}

	int main() {
		std::thread worker(Dowork); //创建一个线程对象worker,传入一个函数开启线程
		std::cin.get();  //工作线程,按下回车
		s_Finished = true; //停止Dowork执行打印
		worker.join();     //主线程等待工作线程完成所有的执行后,再继续执行主线程

		std::cout << "main thread id:" << std::this_thread::get_id() << std::endl;
		std::cin.get();  //主线程,回车程序结束
	}

三、结果展示

按下回车键之前,Dowork()工作线程每隔1秒打印一次,Dowork线程id为 11328。
在这里插入图片描述
按下回车键后,Dowork()工作线程停止打印,并执行主线程,输出主线程id为 4560。再次回车,程序结束。
在这里插入图片描述


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值