鱼C论坛

 找回密码
 立即注册
查看: 1974|回复: 14

[庖丁解牛] 01 - Chrome#进程和#线程那些事儿

[复制链接]
发表于 2020-2-4 17:13:22 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 不二如是 于 2020-2-4 21:35 编辑

上一讲(传送门)该说的事情都交代了。

在介绍进程和线程之前,需要先讲解下并行处理

因为理解了并行处理的概念,那么再理解进程和线程之间的关系就会变得轻松许多。

定义:

并行处理计算机中的并行处理就是同一时刻处理多个任务。

比如我们要计算下面这三个表达式的值,并显示出结果。

代码:
A = 1+"fishc"
B = 30/5
C = 3*6
在编写代码的时候,我们可以把这个过程拆分为四个任务:

  • 任务 1 是计算 A=1+"fishc"
  • 任务 2 是计算 B=30/5
  • 任务 3 是计算 C=3*6
  • 任务 4 是显示最后计算的结果。

正常情况下程序可以使用单线程来处理。

也就是分四步按照顺序分别执行这四个任务。

如果采用多线程,会怎么样呢?

我们只需分“两步走”:
游客,如果您要查看本帖隐藏内容请回复

通过对比分析,你会发现用单线程执行需要四步,而使用多线程只需要两步。

因此,使用并行处理能大大提升性能。

同时处理多个任务,就是并行处理啦。


线程 VS 进程

多线程可以并行处理任务,但是线程是不能单独存在的。

线程是由进程来启动和管理的。

那什么又是进程呢?

一个进程就是一个程序的运行实例。

详细解释就是:

启动一个程序的时候,操作系统会为该程序创建一块内存,用来存放代码、运行中的数据和一个执行任务的主线程。

我们把这样的一个运行环境叫进程。

为了让鱼油更好地理解上述计算过程,分别画两张图。

单线程:

Snip20200204_172.png


多线程:

Snip20200204_173.png


从上面两张图中可以看到:

线程是依附于进程的,而进程中使用多线程并行处理能提升运算效率。

总结来说,进程和线程之间的关系会有 4 个特点。

1. 进程中的任意一线程执行出错,都会导致整个进程的崩溃

例如将任务 2 改为:
B=30/0
由于分母为 0,线程会执行出错,这样就会导致整个进程的崩溃。

当然另外两个线程执行的结果也没有了。

2. 线程之间共享进程中的数据

线程之间可以对进程的公共数据进行读写操作,示意图:

Snip20200204_178.png


从上图可以看出,线程 1、线程 2、线程 3 分别把执行的结果写入 A、B、C 中。

然后线程 2 继续从 A、B、C 中读取数据,用来显示执行结果。

3. 当一个进程关闭之后,操作系统会回收进程所占用的内存

当一个进程退出时,操作系统会回收该进程所申请的所有资源。

即使其中任意线程因为操作不当导致内存泄漏,当进程退出时,这些内存也会被正确回收。

最早的 IE 浏览器,支持很多插件,而这些插件很容易导致内存泄漏。

这意味着只要浏览器开着,内存占用就有可能会越来越多~

但是当关闭浏览器进程时,这些内存就都会被系统回收掉。

4. 进程之间的内容相互隔离

进程隔离是为保护操作系统中进程互不干扰的技术,每一个进程只能访问自己占有的数据。

也就避免出现进程 A 写入数据到进程 B 的情况。

正是因为进程之间的数据是严格隔离的,所以一个进程如果崩溃了,或者挂起了,是不会影响到其他进程的。

如果进程之间需要进行数据的通信~

这时候,就需要使用用于进程间通信(IPC)的机制了。

暂时不用管 IPC 是什么哦




如果有收获,别忘了评分


                               
登录/注册后可看大图


如果想看更多,请订阅 淘专辑传送门)(不喜欢更要订阅

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-2-5 21:52:06 | 显示全部楼层
谢谢大佬
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-5 22:48:46 | 显示全部楼层
I dont know
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-9 11:33:06 | 显示全部楼层
好奇中,看看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-18 20:48:35 | 显示全部楼层
来学习学习。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-3 13:04:42 | 显示全部楼层
任务 1
任务 4
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-14 14:26:03 | 显示全部楼层
学习学习
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-20 12:08:45 | 显示全部楼层
多线程
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-10 14:59:53 | 显示全部楼层
来学习
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-11 18:08:05 | 显示全部楼层
1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-8-13 22:43:50 | 显示全部楼层
1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-8-14 18:54:55 | 显示全部楼层
顾客
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-9-15 20:17:08 | 显示全部楼层
学习
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-10-8 17:35:33 | 显示全部楼层
1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-11-20 14:12:11 | 显示全部楼层
1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-22 15:08

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表