【问题标题】:Web workers in Javascript, number of threads and workers?Javascript中的网络工作者,线程数和工作者?
【发布时间】:2016-02-21 21:50:20
【问题描述】:

如果我理解正确 Web Workers单个隔离线程 中运行,因此我不明白创建多个 Worker 的意义。

我找到了这个演示 https://nerget.com/rayjs-mt/rayjs.html , 这显示了使用工作人员在画布上渲染立方体的性能优势。

我尝试使用 5 和 15 工人。没有看到渲染速度有任何显着差异。

创建大量 Web Worker 有什么意义吗?如果是,正确的数字是多少?

任何帮助将不胜感激!

【问题讨论】:

  • 对我来说,该演示的结果并不一致,除非同一测试连续运行大约 5 次。
  • @DavidSherret - 对我来说也是一样,有时 2 个工作人员渲染立方体的速度比 5 个更快。如果有必要使用其中的许多,这就是问题......

标签: javascript web-worker


【解决方案1】:

工作者可能在另一个线程上运行,也可能不运行。如果创建太多线程,它们实际上不会同时运行:这种行为是模拟的。由于向/从工人发送/接收消息需要时间,因此创建太多工人实际上可能会损害您的性能。

更多信息可以在here找到。

区分软件线程和硬件线程很重要。软件线程是程序创建的线程。硬件线程是真实的物理资源。芯片上的每个内核可能有一个或更多硬件线程,例如使用英特尔超线程技术。

当软件线程多于硬件线程时,操作系统通常会采用循环调度。每个软件线程都有一个短暂的转折,称为时间片,以在硬件线程上运行。当时间片用完时,调度器会挂起线程并允许下一个等待轮到它的线程在硬件线程上运行。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-05-18
    • 1970-01-01
    • 2014-05-29
    • 2015-03-16
    • 2021-11-09
    • 2010-12-24
    • 2020-05-17
    相关资源
    最近更新 更多