Web Workers可以使用100%的多核CPU吗?

时间:2012-08-08 19:08:30

标签: javascript html multithreading html5 web-worker

我一直在努力找出网络工作人员分配处理器负载的能力。我还没有找到任何能够让我的四核2600k甚至达到50%的演示,更不用说100%了。

这是一个网络工作者演示,我试图最大化我的CPU:

http://nerget.com/rayjs-mt/rayjs.html

(如果你使用firebug / chrome-inspect-element进入页面的HTML并使画布更大,你可以使它成为更大的图像 - 我设置为1920 x 1080)

即使选择了4,8,16名工作人员,我也无法将每个核心的CPU利用率提高到25%左右。

有没有人知道你是否可以通过网络工作者使用100%的CPU?

(我正在使用谷歌浏览器。)

2 个答案:

答案 0 :(得分:21)

这在我的2500K上使用100%:

var code = "while(true){}";
var URL = window.webkitURL || window.URL;
var bb = new Blob([code], {type : 'text/javascript'});

code = URL.createObjectURL(bb);

new Worker(code);
new Worker(code);
new Worker(code);
new Worker(code);

http://jsfiddle.net/MTJ27/81/

答案 1 :(得分:10)

我使用新的blob构造函数重写了Esailija的答案。 BlobBuilder现在已经过时,所以你必须使用Blob(),请参阅这里的deets:http://updates.html5rocks.com/2012/06/Don-t-Build-Blobs-Construct-Them

window.URL = window.URL || window.webkitURL;

var blob = new Blob(["while(true){}"], {type: 'text/javascript'});

code = window.URL.createObjectURL(blob);

new Worker(code);
new Worker(code);
new Worker(code);
new Worker(code);

http://jsfiddle.net/MTJ27/15/