这是不是一个真正的问题的WebGL它只是一个普通WebWorker问题。尽管这取决于我的头顶。工人只是线程。如果100%的线程忙于100%的时间(不等待IO或用户输入或下一帧),那么一旦拥有比线程更多的线程,就不会加速。
换句话说,如果你有2个内核,每个运行3个线程,而不等待任何事情超过1个内核将运行1个线程100%的时间,另一个内核将运行每个其他线程50%时间。总时间将与将2个线程合并为1相同。
因此,产生大量线程不一定是赢,并且有一个way来查询用户计算机的核心数在浏览器中有JavaScript。
最重要的是,你正在处理这可能是大型数据网格。假设每个网格在处理时使用200meg(如JSON),完成后使用100meg(您已阅读JSON并转换为Float32Arrays等)。换句话说,完成后您将获得1gig的数据(十个100meg网格)
因此,你产卵了10名工人。当它们完成时,将剩下1个数据(最后10个网格),但是当它们运行时,每个使用300meg(200meg读取JSON,100meg存储结果)。这是他们运行时总共3个内存。你可能会用完内存。
在哪里,如果你有与工作要做,你会使用内存最多的队列只是一个网状加工者为1.2演出。工作人员将阅读JSON(200meg)转换为Float32Arrays(100meg),将这些Float32Arrays传递到主页面,然后处理下一个网格。
有3路我看到
产生一个工人来处理网格。当它完成时终止它。产生一个新的。
产生一个工人是不是免费的,因为它必须每次都加载JavaScript?
菌种每一个网格工人。
见上面为什么可能不是一个好主意
生成一个工人,并给它的网格队列去努力。
可能感兴趣 - http://typedarray.org/concurrency-in-javascript/ – vsync
谢谢,vsync。文章有问题:据我所知,工人可以在自己内部创建一名工人。 – wandalen