00:00
来我们接着来说,那刚才呢,我们这块简单的介绍了一下,我们这个命量窗口啊,主要说了一个这个环境变量,这个pass啊,这东西一定要给它搞明白啊,搞清楚那接下来呢,我们再说一个这个概念啊,说一个概念什么呢?我们叫做一个这个第二一个我们叫做一个这个进程和这个线程啊进程和线程这两个概念经常会会听到啊,我们来说一下这东西到底是干嘛的进程,还有一个这个线程,诶咱们先说这个进程,什么是进程,什么是进程,那这里边我们来说那进程很明显的,其实如果是这样啊,我们来干嘛呢?先都给它关了啊,我们这儿如果打开我们这个单,诶在这儿啊,单击我们这个右键,然后。
01:00
它到有一个任务管理器啊,点开这任务管理器,在这儿很明显有一个选项叫什么呀,叫进程对吧,叫进程,这进程里边你会发现它运行的是我们一个一个的这个软件,你像这个就是我这个红蜘书,这是我这个什么呀?诶录屏软件对吧?等等等等一系列软件,什么有道的笔记啊,什么这个这个什么这个词典是吧,什么迅雷等等一系列的吧,诶一系列的,那这块运行的是我这软件,那这些其实就是什么呀,就是这个进程啊,就是进程,那什么是进程么?哎,你你可以说这个就是进程对吧?那这个到底是什么呀?到底是什么,那么想想我写了一个程序,或者我有一个软件,我在计算机里要干嘛呀,要运行对吧?要运行那问题来了,在哪运行啊,在哪运行啊,是不是得有一个位置啊,哎,得有一个。
02:00
配置,所以进程干嘛呢?诶进程它其实有点像一个这个仓库,哎,或者说它像一个这个工厂的一个车间,进程负责什么呢?进程负责我们能干嘛呢?负责保存诶负责诶为我们这个程序的这个运行提供什么呢?提供这个必备的一个环境,诶必备的一个环境什么意思呀?首先我程序运行,假如说我这写了一个代码,我来一个这个Y一个A等于一个这个十,然后我这Y一个B等于20,诶然后省略吧,假如说我这有有有有一部分代码我要执行,我想执行这个代码,我是不是心里有一个地方去。保存这个代码啊,我现在存起来我是才能执行啊,你都没地方存,是不是谈不上执行啊,所以注意进程负责为程序的运行提供必备的什么呀,环境啊,必备的环境,也就是说我的代码实际上都是干嘛的呀,简单理解就是我们的程序,我们的代码,它际上都是存到什么呀,进程里的啊,都是存到进程里的,所以这里边我们说一个形象的比喻,我们叫什么呢?进程,进程就相当于我们这个工厂中的什么呢?厂中的一个车间一样,哎,工厂中的车间,这是我们说的一个进程啊进程好,那现在我们来说进程其实挺好理解的,对吧,就是一个这个一块内存呀,或者说我们提供一个环境,让我们可以运行这个程序,那我们想想,光有进程,我这个程序能不能执行,你说我光有车间了,我这车间特别特别大。
03:42
设备也特别特别全,能不能生产我这个东西没人对吧,没人我是不是得有人来给我去干活啊,哎干活那谁是干活呢?哎,就是我们这个县城啊,县城它是这个干活的啊,县城是干活的,那这里边我们来说一下我们这个线程,线程是干嘛的,线程什么呢?线程是我们计算机中的这个最小的一个计算单位啊,最小的计算单位,那县程干嘛呢?线程负责,哎,负责执行我们这个保存到我们这个进程中的什么呀,中的这个程序啊,负责这么写吧,执我们这个进程中的这个程序,说白了县程是干活了,再说具体一点,县城干嘛呢?县程就哎相当于我们这个。
04:42
工厂中的这个什么呀,工人啊,就相当于我们这个工厂中的工人,这是我们进程和县程的关系,所以这里边你如果打开这种管理器,你会发现我这儿是不是有很多的进程啊,有很多进程,也就是说表示现在我有很多程序被挂起了,但是是不是说我每一个程序都在执行啊,是不是,哎,你看这它是不是有一个CPU啊,这表示说它占有CPU资源的一个这个哎,这个盆比,那你会发现后边很多是不都是零啊,都是零表示实际上什么呀,实际上这一部分程序它并没有运行,只不只是什么呀,有有数值的,他在干嘛呀,在运行什么意思呀?比如说这一堆空车间是什么呀?闲置的啊,闲置的,而这有数的人干嘛呀,是有工人在干活的,所以县城是干活的,进程的,是提供环境,能听懂这意思吧,哎,好,那这个就是我们说的一个这个进程和县。
05:42
啊,好好理解一下,然后呢,这里边我们要说一个概念,就是这里边我们来说一下,一个叫做单线程,还有一个什么呢?还有一个叫做一个多线,单线程还有多线程这个东西我就不再细写了,单线程什么意思,单线程什么意思,一个线程对吧?就是什么呀,一个人干活对吧,我一个活一个人干,那多线程的,哎,多线程就是多个人同时干一个一个活,哎,那要问你了,单线程好还是多线程,哎,那很明显我们直观上一看,肯定是多线程好对吧?而且多线程的速度呢,它的性能,你想同样一个事儿,我有多个人干,一般来讲是不是肯定会比比一个人干要快呀,所以我们普遍的思想认为都是这个多线程是快的,但是也也确实是多线程的性能会比较好。但是。
06:42
但是是绝对的好,哎,不一定,那你说我说我这有一个工程,我要盖个房,你说我人越多可能盖的越快,对吧,但是我如果这个工作量太小了呢,你说我这我这有一碗米饭,我的工作呢,是把这碗米饭给吃了,我找100个人去干这活。
07:04
你觉得能快得了,哎,很有可能这100个人就打起来了,你到底谁吃是吧,可能这一碗米饭合不上一人,一人一粒是吧,能就能打起来了,那所以这个单线程和多线程它没有什么呀,绝对的好坏,但是我们一般主主流还是什么呀,还是多线程,主流还是多线程,但是我们的GS是什的,哎,GS是单线程,你像我们的浏览器,我们的这些浏览器它都是什么呀,单线程的,那为什么浏览器要设置成单线程的,诶那我们就希望什么呀,我希望我想那多线程是不是能更快一点啊,比如说我一个线程负责渲染页面,一个线程负责什么呢?负责这个执行GS,那这样是不是更好一点,速度能更快一点,会不会?哎,理论上讲会更快一点,但是会有什么问题呢?如果是多线程,容易发现一个问题,就是我们这个并发。
08:04
问你什么问题好,一个线程负责渲染页面,一个线程负责执行什么呀?G代码,那这时候你会发现有可能出现一个问题,我这个线程在渲染页面,而我这个线程在执行结代码,那这个时候我接代码里边有一个代码干嘛呀?它在改样式,我渲染页面这个样式它要渲染的是一个红色,我GS线程这个样式渲染完了是一个什么呀?想渲染一个蓝色,那这时候这两个是不是就矛盾了,到底听谁的呀?到底听谁的呀?红色听谁?谁慢听谁听谁都不合适,懂那意思吧,听谁都不合适,所以我们GS是单线程的,我们浏览器里边GS都是单线程的,你在执行GS代码的时候,它网页的渲染是什么呀?是停止的,尤其是非常明显,你只要执行G代码,它的网页实际上是停止渲染的,它会在你的G代码执行完了以后干嘛呀,渲染啊渲染,所以这里边注意我们的GS是单线程的,哎,JS是单线程,但是主流的程序还都是这个多线程啊,像Java呀,一些这个程序都是这个多线程啊好,那这块我们来听一下。
我来说两句