一.引言
在C++学习中,我们在初步学习的过程中写的程序都只可以在本地并且只可以被本主机访问。在此,我们会想要让别人也体验一下我们邪恶的程序的话,我们该怎么办呢?
首先我们介绍的时多线程编程,就相当于我们的登录qq(电脑上)可以打开多个聊天框,我们的C++程序在调用本文件下的函数时,也只是使用了计算机一个线程的资源,如果要充分发挥电脑的功能的话,我们需要让cpu尽量动起来(不要像所谓的一核有难,七核围观)。为此,C++多线程应运而生。
二.我们来一个小例子吧
首先是多线程,我们需要引入的头文件
#include<iostream> #include<thread>
然后,我们多线程中我们需要调用的函数
void funtion(int time){ cout<<"this is"<<time<<"个线程"<<endl; }
接下来就是我们的主函数了
int main(){ std::thread threads[5];//创建一个进程数组 for (int i = 0; i < 5; ++i) { threads[i] = std::thread(funtion,i+1);//为函数传入参数,即当前调用的是第几个线程 // Sleep(1000); } for (int i = 0; i < 5; ++i) { threads[i].join();//等待线程结束,回收当前线程所占用的资源 } }
哪个Sleep函数我是先注释掉的,我们先来看一下打印的结果
可以看到,这不是我们想要的结果。为什么呢?难道机器也会出错吗?
其实不是机器的问题,当函数调用的时候,我们计算机的一些处理器处理线程的能力好,然后会先结束并在屏幕完成打印,所以我们看到打印的结果是乱的。取消注释Sleep(1000)的时候,我们的结果又是正确的啦。