C++11多线程注意事项以及detach中的坑

多线程编程是必须要掌握的,以前多线程基本是靠系统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表示加入,汇合,即加入进程
	//设想一下,一个进程可以包含多个线程,但只有一个主线程,主线
	//程执行完毕,进程也就结束了,所以传统多线程编程中,是让主线程等待其它线程执行完毕,然后主线程才能结束
	//不然,主线程都结束了,该进程也就结束了,但是那些未结束的其他线程,怎么办?比如其他线程也在往进程输入
	//输出,而进程都结束了,肯定会出错,抛出异常,主线程都执行完毕了,而子线程和主线程都属于进程,进程都结束了
	//但是子线程还在执行,比如
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值