首页 > 解决方案 > 如果客户端只有一个核心 CPU,Web Worker 是否可以正常工作?

问题描述

纯粹的好奇,我只是想知道如果 CPU 中只有一个线程可用,网络工作者是否会设法执行一个单独的线程,也许有一些虚拟化,使用 GPU?

谢谢!

标签: multithreadingweb-worker

解决方案


您的问题似乎有两个前提:首先,网络工作者使用线程;其次,多线程需要多个内核。但两者都不是真的。

首先:实际上并没有要求使用线程来实现网络工作者。用户代理可以自由使用进程、线程或任何“等效结构”[参见 web worker 规范]。如果他们愿意,他们可以在单个线程中使用多任务处理。Web Worker 脚本并发运行,但不一定与浏览器 JavaScript 并行运行。

第二点:多个线程很可能在单个 CPU 上运行。它的工作原理很像单线程 JavaScript 中的并发异步函数。

所以是的,回答你的问题:网络工作者确实在单个核心客户端上正常运行。您将失去一些性能优势,但代码仍会像在多核系统中一样运行。


推荐阅读