aboutsummaryrefslogtreecommitdiffstats
path: root/examples/quick/threading/workerscript/workerscript.js
diff options
context:
space:
mode:
Diffstat (limited to 'examples/quick/threading/workerscript/workerscript.js')
-rw-r--r--examples/quick/threading/workerscript/workerscript.js31
1 files changed, 20 insertions, 11 deletions
diff --git a/examples/quick/threading/workerscript/workerscript.js b/examples/quick/threading/workerscript/workerscript.js
index f76471f920..ada3d82589 100644
--- a/examples/quick/threading/workerscript/workerscript.js
+++ b/examples/quick/threading/workerscript/workerscript.js
@@ -1,15 +1,24 @@
-var lastx = 0;
-var lasty = 0;
+//Will be initialized when WorkerScript{} is instantiated
+var cache = new Array(64);
+for (var i = 0; i < 64; i++)
+ cache[i] = new Array(64);
-WorkerScript.onMessage = function(message) {
- var ydiff = message.y - lasty;
- var xdiff = message.x - lastx;
-
- var total = Math.sqrt(ydiff * ydiff + xdiff * xdiff);
-
- lastx = message.x;
- lasty = message.y;
+function triangle(row, column) {
+ if (cache[row][column])
+ return cache[row][column]
+ if (column < 0 || column > row)
+ return -1;
+ if (column == 0 || column == row)
+ return 1;
+ return triangle(row-1, column-1) + triangle(row-1, column);
+}
- WorkerScript.sendMessage( {xmove: xdiff, ymove: ydiff, move: total} );
+WorkerScript.onMessage = function(message) {
+ //Calculate result (may take a while, using a naive algorithm)
+ var calculatedResult = triangle(message.row, message.column);
+ //Send result back to main thread
+ WorkerScript.sendMessage( { row: message.row,
+ column: message.column,
+ result: calculatedResult} );
}