ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

多线程-相关名词

2021-03-17 23:03:24  阅读:183  来源: 互联网

标签:电饭煲 名词 线程 外卖 相关 老四 多线程 但是


转:

多线程-相关名词

1.何为同步异步

同步指执行程序的调用着必须等上一个方法结束过后,然后调用下一个方法,继续向下执行。

例:在家煮饭的时候的时候,你等米饭煮好的时候,你并不是一直呆在电饭煲面前(还真有这样的人),而是去炒菜,但是对于同步来说,就是一直呆在电饭煲面前,等饭好了,再去炒菜,严重影响吃饭的心情,还可能被骂。

异步执行程序的调用着不必等上一个方法结束过后,然后调用下一个方法,继续向下执行。

例:在家煮饭的时候的时候,你等米饭煮好的时候,你并不是一直呆在电饭煲面前,而是去炒菜,吃饭时间大大提前。

2.何为并发并行

并发(一心二用):对于单核CPU,同一时间是只能执行一条命令,但是如何执行多线程?

还是举栗子吧:你在看电视,但是同一时间播出了你喜欢的两部电视剧,都想看,咋办,开两个屏幕,这就是一心二用,你的眼睛是左看一下,又看一下,但是你的大脑会将你分别看到的片段组合成完整的电视剧。这其中你的大脑和眼睛就是cpu,你通过不断左看右看,看完两部电视剧,cpu执行程序也是一样的,cpu通过实际上,如果系统内只有一个CPU,而使用多进程或者多线程任务,那么真实环境中这些任务不可能是真实并行的,毕竟一个CPU一次只能执行一条指令,这种情况下多进程或者多线程就是并发的,而不是并行的(操作系统会不停切换多个任务)。真实的并行也只可能出现在拥有多个CPU的系统中(比如多核CPU)。

并行(二心二用):两线程的程序,在双核上,可以每个核都执行一个线程的程序。

用某种技术,把你分成两个,左边的你看左边的电视,右边的你看右边的电视,这时你的眼睛只关注自己的电视,而不是左看右看。

但是对于结果来说,你都把电视剧看完了,即两者的结果(可能)是一样的。

3.临界区

临界区表示多线程之间的公共数据,两者都会对这个公共数据进行操作,只不过,同一时间只会有一个线程操作。

为啥同一时间只有一个线程进行操作:

还是用电饭煲举栗子:一个寝室4人,但是只有一个电饭煲,都想煮饭吃,但是某人想吃米饭,某人想吃面条(用电饭煲煮面条。。),等,但是按照我们的做法,肯定上一个人做完,下一个人才可以继续,这时这个电饭煲就是临界区,为4个人的公共数据区,但是某位天才,在你的饭里面加入面条,然后开启电饭煲的开关,这时电饭煲就不是临界区,因为同一时间多个人进行操作,最后煮出来的东西是啥,我也不知道。

反正即不是米饭,也不是面条。

4.阻塞于非阻塞

对于多线程来说,当某一线程占用当前的线程的某个资源,当前线程就会出现阻塞,一直占用一直阻塞。

举个栗子(还是电饭煲):

​ 电饭煲把饭煮好了,你准备盛饭吃,但是突然发现,你的碗被室友用来吃面了(。。。),这时的你就进入的阻塞的状态,因为你没法盛饭,碗没了,只有等你室友把洗了还给你,你在继续下面的动作,盛饭,吃饭等。

非阻塞可以看作,你把锅当碗吃起来了。

非阻塞强调,其他的线程无法对当前线程进行影响,虽然室友用了你的碗,但是对你吃饭来说没影响,(因为你用锅吃)。

5饥饿死锁于活锁

饥饿:指某一资源为当前线程需要,但是由于某种原因一直获取不到(比如线程优先级过低),导致当前线程一直无法运行,处于饥饿状态。

还是吃饭的栗子:

寝室4个人,老一老二吃了饭,但是老三老四,看到这个吃样,不想和他们一起吃,决定点外卖,但是这个时候是中午12:00,点外卖的有点多,他们决定老三点两份,帮老四点一份,但是有点节约,没vip点的东西有点少,然后下单,过了好久,老二的锅里面的饭都吃完了,饭还没送来,原来某外卖机制,优选配送vip客户,优先配送价格高的客户,自然的,他们一直就等不到自己的外卖的,然后,如何解决?? 冲VIP呀,几秒钟,外卖来了(夸张)。

所以对于线程优先级问题造成的饥饿现象,可以通过线程的优先级的调整。

死锁:对于多线程来说,多个线程之前相互持有当前线程需要的资源,而不释放,就会导致多个线程相互等待对方进行资源释放,然后一直等待下去,造成死锁。

继续吃饭:

​ 老三老四的外卖终于来了,老三知道老四经常白嫖饭,所以让他先给钱,再把外卖给他,但是老四表示,先把外卖给我,我就给你钱,所以这就造成了一个有趣的现象,老三要看见钱,才给外卖,老四要先看见外卖才给钱,然后一直这样僵持下去,对于计算机来说,计算机可不像人这么聪明,计算机是不会让步,就会一直这样僵持下去,形成死锁。

活锁:多线程都需要某一个资源,但是他发现其他的线程也需要,所以就没抢,但是其他线程也这样没抢,就造成了多个线程的等待。

继续吃饭:老三老四吃着外卖,这时老大给了他们一个肉丸子,这个丸子只有一个,然后秉着谦让的态度,老三说,老四你吃,老四说不不不,三哥吃,几轮谦让下来,谁都让对方吃,这时双方都动筷子了,同时夹向肉丸,筷子碰在一起,尴尬,然后继续对象,老三说,老四你吃,老四说不不不,三哥吃。。。无线循环。。对于计算机来说,谁也吃不到这个丸子。

不写了,吃饭去了。

转:

多线程-相关名词

标签:电饭煲,名词,线程,外卖,相关,老四,多线程,但是
来源: https://www.cnblogs.com/wangtcc/p/14552715.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有