Web Worker和异步的对比(浏览器线程,任务队列)

本文介绍了浏览器的主要线程,包括UI线程、JavaScript引擎线程、GUI事件触发线程和HTTP传输线程等,并讨论了它们之间的异步关系。JavaScript中的异步执行机制通过任务队列实现,任务被分为同步和异步两类。Web Worker作为真正的多线程,允许执行大计算量的任务,但受限于不能操作DOM和跨域加载JS等。
摘要由CSDN通过智能技术生成

1.浏览器的主要线程

UI线程(用于渲染页面)
javascript引擎线程(用于处理js)
GUI事件触发线程(用于交互)
还有HTTP传输线程和定时触发线程(定时器)

(1)UI线程和javascript引擎线程互斥
因为 javascript 可以操作页面的DOM,所以两个线程不互斥的话,ui线程在页面渲染的同时,js进行DOM修改,最终会造成DOM不一致的现象,所以js引擎运行的时候,ui渲染处于冻结状态。
(2)js引擎和GUI事件触发线程(用于交互)异步
浏览器开启事件触发线程,等待用户动作,事件触发线程为响应事件,转移到javascript引擎线程
(3)js引擎和http传输线程 异步
get ,post等请求,xhr异步请求都通过http 传输线程,传送到javascript引擎排队
(4)js引擎和定时触发线程(定时器)异步
settimeout和setinterval,由单独的线程定时触发,传送给javasceipr引擎排队

当然虽然说是这么多主要任务线程,但是实际都是假的,
实际上也是是由一个js线程解决问题。

所以主要的还是任务队列

任务队列是一个事件的队列,IO设备完成一项任务,就在”任务队列“中添加一个事件,表示相关任务可以进入”执行栈“,主任务读取”任务队列“,就是读取里面的哪些事件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值