多线程编程是必须要掌握的,以前多线程基本是靠系统API或者第三方库完成的,比如windows的API函数CreateThread,linux创建线程函数pthread_create,但是这样编写的代码不可移植,不能跨平台,比如windows的多线程程序拿到linux下是跑不起来的,相反也一样,很不方便,然而C++11语言本身支持多线程,和平台无关,下面就来简单认识多线程
# include<iostream>
# include<thread>//C++11本身支持的多线程,需包含该头文件
using namespace std;
void thread1();//子线程1(可调用对象作为线程的入口)
int main()
{
//一个.exe可执行程序即为一个进程,一个进程可以有一个或多个线程,其中有一个主线程
//这里C++编写完成生成.exe可执行程序,main中的代码执行的就是主线程要做的事,我们自己进行多线程编程
//可以定义一个函数,在函数中编写要做什么事的代码,多线程是并发执行的
thread myThread(thread1);//线程一旦被创建就开始执行了,与main并发执行的,在遇到join之前,
//可能一会执行main函数,一会执行thread1函数,是不确定的,每次运行结果都可能不一样
cout << "主线程开始!" << endl;
cout << "我是main函数1" << endl;
cout << "我是main函数2" << endl;
cout << "我是main函数3" << endl;
cout << "我是main函数4" << endl;
if(myThread.joinable())//可以加入时才能加入主线程
myThread.join();//join表示加入,汇合,即加入进程
//设想一下,一个进程可以包含多个线程,但只有一个主线程,主线
//程执行完毕,进程也就结束了,所以传统多线程编程中,是让主线程等待其它线程执行完毕,然后主线程才能结束
//不然,主线程都结束了,该进程也就结束了,但是那些未结束的其他线程,怎么办?比如其他线程也在往进程输入
//输出,而进程都结束了,肯定会出错,抛出异常,主线程都执行完毕了,而子线程和主线程都属于进程,进程都结束了
//但是子线程还在执行,比如