JavaScript线程与进程机制

线程与进程机制

进程与线程

进程:程序运行的时候,独立站用一块内存空间

线程:进程内一个独立执行的的单元,是程序执行的一个完整流程,是cpu最小的单元调度

一个进程只要有一个运行的线程

一个进程可以有多个线程

线程池:保存多个线程对象的容器,实现程序复用

多线程和多进程

多进程:一个应用程序可以同时启动多个实例

多线程:在一个进程中,同时有多个线程运行

多线程的优缺点

good:有效提高cpu的利用率,创建多线程开销

bad:线程之间切换开销,死锁和同步问题

单线程的优缺点

good:顺序变成简单易懂

bad:效率低

JS和线程

js是单线程运行的,但使用H5的web Workers可以多线程运行

浏览器是多线程运行的,有多进程的,也有单进程的

js作为浏览器的脚本预压,主要是与用户互动以及操作dom的,如果用多线程,会带来很复杂的同步问题

浏览器内核

支撑浏览器最核心的程序

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tn6xmNDS-1601088994832)(D:\软件\其他\Typora\image-20200924162803043.png)]

内核的组成

js引擎

html/css文档解析模块

DOM/CSS模块

布局和渲染模块

定时器模块

事件响应模块

网络请求模块

定时器模块相关问题

定时器不能保证真正定时执行,一般会延迟一丁点

js引擎基本流程

先执行初始化代码

再执行一些特殊代码{

设置定时器

绑定监听

发送ajax请求

}

最后再执行回调偏函数代码

事件循环模型

是JS的运行时还有一个事件等待队列与栈搭配,每当运行栈为空时(也就是当前函数运行结束),JS的运行时就从当前的事件队列中取出一个消息处理,执行与这个消息相关联的函数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值