美文网首页
JavaScript:关于线程

JavaScript:关于线程

作者: 松哥888 | 来源:发表于2017-09-27 15:47 被阅读28次

JavaScript引擎是单线程运行的,浏览器无论在什么时候都只且只有一个线程在运行JavaScript程序。

JavaScript可以异步执行,这种能力是由其执行环境(比如浏览器,Node)赋予的。

JavaScript一般有以下三个线程:

  1. JavaScript引擎是单线程执行的,JS引擎一直等待着任务队列中任务的到来,然后加以处理,浏览器无论什么时候都只有一个JS线程在运行JS程序。

  2. GUI渲染线程负责渲染浏览器界面,当界面需要重绘(Repaint)或由于某种操作引发回流(reflow)时,该线程就会执行。但需要注意GUI渲染线程与JS引擎是互斥的,当JS引擎执行时GUI线程会被挂起,GUI更新会被保存在一个队列中等到JS引擎空闲时立即被执行。

  3. 事件触发线程,当一个事件被触发时该线程会把事件添加到待处理队列的队尾,等待JS引擎的处理。这些事件可来自JavaScript引擎当前执行的代码块如setTimeOut、也可来自浏览器内核的其他线程如鼠标点击、AJAX异步请求等,但由于JS的单线程关系所有这些事件都得排队等待JS引擎处理。

js事件线程机制和异步执行

js的单线程和异步

看到关于JS线程的两篇文章

相关文章

网友评论

      本文标题:JavaScript:关于线程

      本文链接:https://www.haomeiwen.com/subject/gzuuextx.html