线程进程与UI主线程

收藏一下,线程进程讲的最好的一段话
转自https://www.nowcoder.com/test/question/done?tid=24104484&qid=56178#summary 作者:g给不二

在这里插入图片描述
web Worker 本质是一个线程,在UI主线程之外并发执行的线程,主要解决耗时的JS任务。

首先了解浏览器的线程模型是怎样的?
程序:计算机可以执行的代码,存在磁盘中 — 这是静止的(比如这是买的一块地皮);
进程:把 程序 调入到内存中,等待被CPU执行 — 这是活动的(这是在地皮上建起来的几个工厂);
线程:是CPU执行 进程 代码的基本单位 — 相当于生产任务(这是在工厂中进行生产的生产线);
而 进程 与 线程 的关系是:进程是操作系统分配内存的基本单位,线程处于进程内部,是CPU执行代码的基本单位,一个进程中至少有一个线程,也可以有多个(就比如在一个工程内,可以有一条生产线,也可以有多条生产线),多个线程间并发执行,从宏观上看是‘同时’执行,微观上看是‘轮流’执行。

拿chrome中的线程模型举例
1.chrome 中发起HTTP请求最多可以使用6个并发线程;
2.而负责向页面中执行绘制任务(HTML/CSS/JS/事件处理代码)的只有1个线程 — UI主线程,如果碰到耗时的代码就有问题了,解决的办法:创建一个新的线程,去执行耗时的JS任务 – 与UI主线程并发执行

Worker 线程的缺点:浏览器禁止Worker线程操作任何BOM 和 DOM对象,不能使用Worder加载类似jQuery.js文件。

猜你喜欢

转载自blog.csdn.net/weixin_39285712/article/details/90593959
今日推荐