35 lines
907 B
JavaScript
35 lines
907 B
JavaScript
importScripts("worker-resources.js");
|
|
|
|
onmessage = function (event) {
|
|
var memory = event.data;
|
|
var workPerCriticalSection = memory[1];
|
|
var workBetweenCriticalSections = memory[2];
|
|
|
|
var doubleMemory = new Float64Array(memory.buffer);
|
|
|
|
var lockIdx = 0;
|
|
var countIdx = 2;
|
|
var count = 10000000;
|
|
|
|
postMessage("Started!");
|
|
postMessage("Memory: " + memory);
|
|
|
|
var value = 1;
|
|
var localWord = 0;
|
|
for (var i = 0; i < count; ++i) {
|
|
cascadeLock(memory, lockIdx);
|
|
for (var j = workPerCriticalSection; j--;) {
|
|
doubleMemory[countIdx] += value;
|
|
}
|
|
cascadeUnlock(memory, lockIdx);
|
|
for (var j = workBetweenCriticalSections; j--;) {
|
|
localWord += value;
|
|
value = localWord;
|
|
}
|
|
}
|
|
|
|
postMessage("All done!");
|
|
postMessage("Memory: " + memory);
|
|
postMessage("done");
|
|
}
|