javascript - 某些浏览器在操作系统中是否包含多个线程?

标签 javascript

我试图从宏观 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/

相关文章:

javascript - 如何重命名数组中对象的属性。解决任务的正确方法是什么?

javascript - 有没有办法使用数组来简化代码?

Javascript 删除部分数组值并创建新数组

javascript - 如何将onload添加到span

javascript - 脚本链接中的@(at)符号导致异常

javascript - hasMany 关系中的 Ember 数据可变数组

javascript - 带有子类别的 d3 条形图

javascript - 获得两个对象的键的交集的最佳方法?

javascript - react : how to lift props up to parent component?

javascript - 在 React 中渲染数组中的特定元素