我试图从宏观 Angular 理解我的代码是如何工作的。
我从这个SO Question了解到并行编程是可能的其中链接到一篇关于 web workers 的文章作者:Resig。
我发现这令人困惑,因为我认为我已经读到浏览器中的 JavaScript 是单线程的。
也许我的东西不匹配。
某些浏览器支持多线程吗?这与并行处理相似或相关吗?
最佳答案
网络浏览器中的 JavaScript 在语义和行为上始终是单线程的。有一个名为“Web Workers”的新工具,它允许多个独立的 JavaScript 线程运行,但每个线程都看到一个语义世界(除了一些特定的特殊情况)正是人们在单线程事件中所期望的那样 -驱动环境。
主“页面”线程和每个工作线程之间的通信严格通过消息传递进行。将消息传递给工作线程(或页面线程)会触发一个事件,必须处理该事件才能接收消息。
Here is the MDN intro to Workers.
编辑 正如我在下面的评论中所写,思考这个问题有不同的方式。浏览器(或任何其他 JavaScript 环境)可以同时运行许多不同的 JavaScript 执行线程。那是“多线程环境”吗?好吧,如果你愿意的话,我猜你可以这样调用它。然而,从每个线程的 Angular 来看,没有其他线程需要担心:只有要处理的事件和通过平台 API 启动的操作(例如,DOM 交互、XHR 和 Workers)。这些 API 要么是同步的,要么不是。但无需担心同步原语,无需与其他线程共享内存等。
关于javascript - 某些浏览器在操作系统中是否包含多个线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14840466/