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。再次回车,程序结束。