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

Bum*_*imp 22 html javascript html5 multithreading web-worker

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

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

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

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

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

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

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

Esa*_*ija 25

这在我的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);
Run Code Online (Sandbox Code Playgroud)

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


Stu*_*tuR 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);
Run Code Online (Sandbox Code Playgroud)

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