美文网首页
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