Javascript 什么';Web工作线程和工作线程之间的区别是什么?

Javascript 什么';Web工作线程和工作线程之间的区别是什么?,javascript,node.js,Javascript,Node.js,我找不到任何资源来解释Web Workers()和Worker Threads()之间的区别,Web Workers()已经存在多年并支持PWA,Worker Threads()最近在Node.js中发布 据我所知,这两种方法都只是允许JavaScript在多个线程中运行代码。那么,为什么工作线程被作为“新”事物发布呢?Web工作线程是一种存在于浏览器中的技术 工作线程是存在于node.js中的一种技术 它们有相似的目标,但由于环境的不同,它们有不同的实现 据我所知,这两种方法都只是允许Java

我找不到任何资源来解释Web Workers()和Worker Threads()之间的区别,Web Workers()已经存在多年并支持PWA,Worker Threads()最近在Node.js中发布


据我所知,这两种方法都只是允许JavaScript在多个线程中运行代码。那么,为什么工作线程被作为“新”事物发布呢?

Web工作线程是一种存在于浏览器中的技术

工作线程是存在于node.js中的一种技术

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

据我所知,这两种方法都只是允许JavaScript在多个线程中运行代码

是的,没错。具有明显的限制,例如无法访问与主线程相同的变量,并且在浏览器中无法访问DOM。线程和主线程之间的通信通常通过消息传递完成

那么,为什么工作线程被作为“新”事物发布呢


在“新”工作线程出现之前,Node.js无法在线程中运行Javascript代码。node.js从来没有Web工作人员。网络工作者在浏览器中已经存在了一段时间。在工作线程出现之前,开发人员必须使用多个进程来包含额外的CPU,或者防止CPU密集型代码阻塞事件循环。现在,node.js开发人员可以使用工作线程来实现这一点。

Nodejs确实有子线程/集群。。但区别在于集群运行在cpu的新核心上,而线程运行在同一核心上。您可以在一个cpu上有多个线程,但理想情况下每个核心有一个线程。@MuhammadUmer-现代操作系统也使用多个核心来执行线程。线程不是与单个核心关联的,因此线程始终与启动它的核心保持一致。一个内核可以有N个线程。X核可以有N*X个线程。最后一点是,由于“上下文切换”的成本@MuhammadUmer,每个内核的线程数越少越好——当一个线程实际执行时,它不会从一个内核跳到另一个内核,但如果操作系统时间将其分割,让其他线程公平地运行,它可以返回到任何内核,除非它绑定到特定的内核。另外,线程不绑定到其父进程运行的核心。请记住,在现代操作系统中,已经有很多其他线程是运行操作系统的内务管理的一部分。当我现在在Windows 10系统上查看Process Explorer时,已经有数百个线程。