c++并发与多线程(一)

记录一下学习C++并发、线程、进程过程,

并发VS并行

并发:有两个或两个以上的任务(独立的活动),同时发生(进行),
或者说**一个程序同时执行多个独立任务**。

并行:顾名思义,同一时刻,可以同时处理多个操作,强调的是开始时间。

之前的计算机是单核CPU,同一时刻只能实现一个任务:由操作系统调度,每秒钟进行多次所i为的“任务切换”(第一个任务10ms、快速切换到下一任务10ms.只要我速度够快,看起来就像几个任务同时进行了)。但是这只是一种假象的并发,并不是真正的并发。这种切换也叫做上下文切换,是有时间开销的。比如,操作系统要保存你切换时候的各种状态,执行进度等信息。都需要时间,一会切换回来的时候要 复原这些信息。

但是,随着科技的进步,硬件的发展,出现了多处理器的计算机:用于服务器和高性能的计算领域。

现在在一块芯片上有多个(多核)CPU:双核、4核、8核、10核、、、、、能够实现真正的并行,执行多个任务(硬件并发)

打开任务管理器瞅瞅:
在这里插入图片描述
举个例子:每个任务都有被CPU执行的机会。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JE12Bw7o-1619618453013)(C:\Users\小新2020\AppData\Roaming\Typora\typora-user-images\image-20210418185147989.png)]

当cpu的数量少于任务数的时候,其实只是通过轮流调度来实现一种表面的并发进行。

为什么要使用并发:可以同时执行多个任务,有提高性能的作用

可执行程序

磁盘上的一个文件,Windows下的扩展名为.exe文件。Linux下 ls -la ,rwx文件

进程

就是上面说的,一个可执行程序运行起来了,我们就叫创建了一个进程;

具体的进程情况,我们可以在电脑的任务管理器上看出来

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KRCfoijD-1619618453015)(C:\Users\小新2020\AppData\Roaming\Typora\typora-user-images\image-20210418191212723.png)]

线程

1、每个进程(执行起来的可执行程序)都有一个主线程,这个主线程是唯一的。即:一个进程中只能有一个主线程。

2、当你执行一个可执行程序,产生一个进程后,这个主线程就随着这个进程默默的启动起来了,在我们执行程序的时候,实际上是进程的主线程来执行(调用)这个main函数中的代码。同时,主线程和进程的寿命一样的。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZO3IiWWY-1619618453017)(C:\Users\小新2020\AppData\Roaming\Typora\typora-user-images\image-20210418200424076.png)]

线程:可以理解为代码的执行通路,我们可以写代码来创建其它线程,就可以实现,在同一个时间,在同一个进程执行多个任务,每创建一个新的线程,就可以在同一时刻,多做一件不同的事情。

多线程(并发):线程并不是越多越好。因为每个线程都需要一个独立的内存空间(堆栈)也要考虑电脑的实际情况,除此之外,线程之间的切换也要保存许多中间的状态,切换会耗费本来属于程序运行的时间。

线程总结:

1、线程是用来执行代码的;

2、将线程理解为代码的执行通路,一个新线程代表一条新通路;

3、一个进程自动包含一个主线程,主线程随着进程默默的启动并且运行着,我们也可以通过编码来创建多个线程(非主线程),到是创建的数量不建议超过(200-300),实际情况根据项目需求不断调节和优化。

4、因为主线程是自动启动的,所以一个进程中至少也有一个线程(主线程)–(进程和线程类似父子关系)

5、多线程程序可以做多件事,所以运行效率很高,但是具体的很难评估和量化。实际情况根据项目需求不断调节和优化。

告诫自己::
C++线程涉及很多概念,对于C++学习的道路上非常关键,不要急于求成

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值