C++并发与多线程编程--概念简述


1、并发

两个或者更多的任务(独立的活动)同时发生(进行):一个程序同时执行多个独立的任务。

以往计算机,单核cpu,某一个时刻只能执行一个任务,由操作系统调度,每秒钟进行多次所谓的“任务切换” 并发的假象(不是真正的并发),这种切换(上下文切换)是要有时间开销的, 比如操作系统要保存你切换时的各种状态,执行进度等信息,都需要时间,一会切换回来的时候要复原这些信息。

现在计算机有双核、4核、8核…出现了多处理器,能够实现真正的并行执行多个任务(硬件并发)。

使用并发的原因:同时可以做多个事情,提到性能。


2、进程

一个可执行程序运行起来了,就叫创建了一个进程。
进程,就是运行起来了的可执行程序。


3、线程

(1)每个进程(执行起来的可执行程序),都有一个主线程,这个主线程是唯一的,也就是一个进程中只能有一个主线程。
(2)当执行了可执行程序,产生一个进程后,这个主线程就随着这个进程默默的启动起来了。
(3)线程:用来执行代码。线程可理解成一条代码的执行通道。

除了主线程之外,可以通过自己编写代码来创建其他线程,其他线程走的是别的道路,甚至去不同的地方。
每创建一个新线程,就可以在同一时刻多做一个不同的事情。

多线程(并发)
线程不是越多越好,每个线程,都需要一个独立的堆栈空间(1M),线程之间的切换要保存很多中间状态;切换会耗费本该属于程序运行的时间。

特点:
(1)线程是用来执行代码的。
(2)把线程理解成一条代码的执行通道,一个新线程代表一条新的通道。
(3)一个进程自动包含一个主线程,主线程随着进程默默的启动并运行,可以通过编码来创建多个其他线程(非主线程)。
(4)创建的数量最大都不建议超过200~300个,至于到底多少个,在实际的项目中可以不断调整和优化,有的时候线程太多反而会降低性能。
(5)因为主线程是自动启动的,所以一个进程中最少也是有一个线程(主线程)。
(6)多线程程序即可以同时做多个事情,运行效率高。但是到底有多高,并不是容易评估和量化。


4、并发的实现方式

一般来说,并发的实现方式有两种:多个进程实现、多线程实现。

多个进程实现:比如账号服务器、游戏逻辑服务器等服务器之间的通信。
进程间通信方法:管道、文件、消息队列、共享内存、socket通信(不同电脑服务器上使用方式)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值