小编And*_*and的帖子

在 Web Worker 中解码图像

在我们的 WebGL 应用程序中,我尝试在 Web Worker 中加载和解码纹理图像,以避免在主线程中渲染出现问题。在工作线程中使用 createImageBitmap 并将图像位图传输回主线程效果很好,但在 Chrome 中,这将使用三个或更多(可能取决于核心数量?)单独的工作线程(ThreadPoolForegroundWorker),它们与主线程和我自己的线程一起使用worker 将产生五个线程。

我猜这会导致我的四核上剩余的渲染干扰,因为我可以在 Chrome 开发工具的性能功能中看到一些莫名其妙的长时间。

那么,我可以以某种方式限制 createImageBitmap 使用的工作人员数量吗?即使我将图像作为 blob 或数组缓冲区传输到主线程并从那里激活 createImageBitmap,它的工作线程也会与我自己的工作线程和主线程竞争。

我尝试在工作人员中创建常规图像,而不是在那里显式解码它们,但是图像没有在工作人员上下文中定义,如果我想将它们创建为元素,文档也没有定义。而且常规图像也不可传输,因此在主线程上创建它们并将它们传输给工作线程似乎也不可行。

期待任何建议...

javascript google-chrome web-worker webgl

3
推荐指数
1
解决办法
5410
查看次数

标签 统计

google-chrome ×1

javascript ×1

web-worker ×1

webgl ×1