不二如是 发表于 2020-2-4 17:13:22

01 - Chrome#进程和#线程那些事儿

本帖最后由 不二如是 于 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 是显示最后计算的结果。

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

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

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

我们只需分“两步走”:
**** Hidden Message *****
通过对比分析,你会发现用单线程执行需要四步,而使用多线程只需要两步。

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

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


线程 VS 进程

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

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

那什么又是进程呢?

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

详细解释就是:

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

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

单线程:



多线程:



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

线程是依附于进程的,而进程中使用多线程并行处理能提升运算效率。
总结来说,进程和线程之间的关系会有 4 个特点。

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

例如将任务 2 改为:

B=30/0
由于分母为 0,线程会执行出错,这样就会导致整个进程的崩溃。

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

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

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



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

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

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

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

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

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

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

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

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

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

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

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

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

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

暂时不用管 IPC 是什么哦{:10_319:}



如果有收获,别忘了评分{:10_281:} :

http://xxx.fishc.com/forum/201709/19/094516hku92k2g4kefz8ms.gif

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

weiter 发表于 2020-2-5 21:52:06

谢谢大佬

TCY 发表于 2020-2-5 22:48:46

I dont know

龙炎辉 发表于 2020-2-9 11:33:06

好奇中,看看

科技爱好者 发表于 2020-3-18 20:48:35

来学习学习。

1220305267 发表于 2020-4-3 13:04:42

任务 1
任务 4

yexing 发表于 2020-4-14 14:26:03

学习学习

Ruide 发表于 2020-5-20 12:08:45

多线程

lengxueaoshuang 发表于 2020-8-10 14:59:53

来学习

ljy698 发表于 2020-8-11 18:08:05

1

hjg 发表于 2020-8-13 22:43:50

1

Ray-先生 发表于 2020-8-14 18:54:55

顾客

fumouren 发表于 2021-9-15 20:17:08

学习

627193397 发表于 2021-10-8 17:35:33

1

孙忠亮 发表于 2023-11-20 14:12:11

1
页: [1]
查看完整版本: 01 - Chrome#进程和#线程那些事儿