Web Worker 和 Worker Threads 有什么区别?

you*_*ter 4 javascript node.js

我找不到任何资源来解释 Web Workers ( https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API/Using_web_workers )之间的区别,这些资源已经存在多年并且启用最近在 Node.js 中发布的PWA 和工作线程 ( https://nodejs.org/api/worker_threads.html#worker_threads_worker_threads )。

据我所知,两者都是允许 JavaScript 在多个线程中运行代码的简单方法。那么,为什么 Worker Threads 被作为“新”事物发布?

jfr*_*d00 6

Web Workers是一种存在于浏览器中的技术。

Worker Threads是一项存在于 node.js中的技术。

它们有相似的目标,但是由于环境的不同,它们有不同的实现。

据我所知,两者都是允许 JavaScript 在多个线程中运行代码的简单方法。

对,那是正确的。具有重大限制,例如无法访问与主线程和浏览器中相同的变量,无法访问 DOM。线程和主线程之间的通信通常是通过消息传递来完成的。

那么,为什么 Worker Threads 被作为“新”事物发布?

直到“新”工作线程出现,Node.js 才能够在线程中运行 Javascript 代码。node.js 从来没有 Web Workers。Web Workers 已经存在于浏览器中一段时间​​了。在 Worker Threads 之前,开发人员必须使用多个进程来涉及额外的 CPU 或防止 CPU 密集型代码阻塞事件循环。现在,node.js 开发人员可以使用工作线程来做到这一点。

  • 最好澄清一下为什么他们不只是在 Node.js 中实现 Web Workers,而是创建一个新的 API,即 API 有何不同。 (2认同)
  • 我赞同 @CiroSantilliOurBigBook.com 的问题,并请求详细说明简单的答案“工作线程存在于服务器上,网络工作线程存在于浏览器中,这就是原因”。编辑:找到一个讨论https://github.com/nodejs/node/issues/43583 (2认同)