服务器2026/2/24
2026/7/25 20:51:12
因为启用工作者线程代价很大,所以某些情况下可以考虑始终保持固定数量的线程活动,需要时就把任务分派给它们。
工作者线程在执行计算时,会被标记为忙碌状态。
直到它通知线程池自己空闲了,才准备好接收新任务。
这些活动线程就称为线程池或工作者线程池。
线程池中线程的数量并没有权威的答案,可以参考navigator.hardwareConcurrency属性返回的系统可用的核心数量。
因为不太可能知道每个核心的多线程能力,所以最好把这个数字作为线程池大小的上限。
navigator.hardwareConcurrencynavigator.hardwareConcurrency是一个只读属性,属于 Web API 中的Navigator接口。它返回用户设备上逻辑处理器(即硬件线程)的数量,通常用于帮助开发者优化多线程任务(例如通过 Web Workers)。
Javascript
const logicalProcessors = navigator.hardwareConcurrency;number类型),表示 CPU 的逻辑核心数量。1(尽管实际上可能更多),这是出于隐私或兼容性考虑。Javascript
console.log("逻辑处理器数量:", navigator.hardwareConcurrency); // 可能输出:8(在一台 4 核 8 线程的 CPU 上)如果你是在做性能敏感的应用(比如图像处理、加密、大规模计算),可以结合navigator.hardwareConcurrency来决定启动多少个 Web Worker,但建议加上合理的上限和回退策略。