diff options
Diffstat (limited to 'examples/quick/threading/workerscript/workerscript.js')
-rw-r--r-- | examples/quick/threading/workerscript/workerscript.js | 31 |
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} ); } |