首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

C+11多线程编程(一)——初始多线程

首先还是那个问题,我们为什么需要多线程?单线程编程做的好好的,又简单又好用,为什么要弄出一个多线程编程呢?难道前人是为了设计而设计了个多线程的?显然这是不可能,那么是什么原因呢?用最精炼的语言概括无非就是以下两个原因。

效率和用户体验

效率主要体现在服务端,用户体验更多是体现在客户端,当然肯定不是说效率只体现在服务端,用户体验只体现在客户端,无论是效率还是用户体验在服务端和客户端上都会体现,只是说侧重点不一样,这一点大家要注意下。

那么多线程到底是什么呢?在计算机术语中也可以叫并发,指的是在单个系统里同时执行多个独立的活动,而不是顺序的一个接一个的执行。假设这样的一个场景,你在一个软件中要导入100万条的数据,如果你用单线程,那么你在导入的过程中,你只能等待它导完,其他什么事你都做不了,因为软件会卡在那里,之所以卡在那里,是因为软件里面在传输数据,而你是用单线程,数据还没传输完,下面的代码无法执行。所以这个时候你必须用多线程,开启一个线程来导入这100万条数据,这样才能保证在导入数据的同时,你还可以在软件上做其他操作。

大家要注意一点,在单核CPU上面,并发并不是真正的并发,而是通过时间片轮询的方式来看起来像是并发,真正的并发应该是在多核CPU上面。

说完了多线程的相关概念,我们来说一说多线程编程。在早期C++11之前,C++在语言级别上并不支持多线程,要想实现多线程,必须通过第三方库或者调用平台系统函数来实现的,而不同平台的多线程的系统函数又都不一样,所以给多线程编程带来了很多麻烦。但是从C++11开始,C++终于开始在语言级别上支持多线程,我们也终于可以用一份代码在多个平台上跑了。

那么C++如何实现线程呢?以下是一个实现线程的简单的例子

thread t(thread_task)这个是打开C++多线程世界的一个最简单也是最基础的一行代码,从此C++开始从语言级别上支持了多线程。

以上是一个非常简单的C++多线程的例子,main函数是主线程,thread_task是子线程,thread t(thread_task)意思是启动这个子线程,join()会使主线程会被阻塞,直到子线程执行完毕,然后才退程序。

所以从这个例子大家可以看出C++多线程写法是多么的简洁,让人充满的学习的欲望。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20201204A0HLUK00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券