JavaScript - 单线程、异步

创建时间:
2014-03-28 15:09
最近更新:
2018-06-11 09:45

相关

  • 同步 (lock) - 详见本站专文
  • 异步 / 并发 / 多线程 - 详见本站专文
  • System.Threading 命名空间 (进程、线程) - 详见本站专文

Resource

JavaScript 运行机制详解:再谈 Event Loop
http://www.ruanyifeng.com/blog/2014/10/event-loop.html

  • 为了利用多核 CPU 的计算能力,HTML5 提出 Web Worker 标准,允许 JavaScript 脚本创建多个线程,但是子线程完全受主线程控制,且不得操作 DOM。所以,这个新标准并没有改变 JavaScript 单线程的本质。
  • 同步任务指的是,在主线程上排队执行的任务,只有前一个任务执行完毕,才能执行后一个任务;
  • 异步任务指的是,不进入主线程、而进入 "任务队列" (task queue) 的任务,只有 "任务队列" 通知主线程,某个异步任务可以执行了,该任务才会进入主线程执行。
  • setTimeout(fn,0) 的含义是,指定某个任务在主线程最早可得的空闲时间执行。它在 "任务队列" 的尾部添加一个事件,因此要等到同步任务和 "任务队列" 现有的事件都处理完,才会得到执行。

Node.js 的线程和进程
http://www.admin10000.com/document/4196.html

JavaScript 异步的四种实现
http://blog.csdn.net/lee_magnum/article/details/10561173