diff options
| author | yo mama <pepper@scannerjammer.com> | 2015-04-04 01:00:59 -0700 |
|---|---|---|
| committer | yo mama <pepper@scannerjammer.com> | 2015-04-04 01:00:59 -0700 |
| commit | c7c22e3db1c826bcfb2bc66651ec480aae0d4ae0 (patch) | |
| tree | 8546df448afef40d3814d2581f4dacff7cebb87f /node_modules/webworker-threads/examples/ex06_jason.md | |
Diffstat (limited to 'node_modules/webworker-threads/examples/ex06_jason.md')
| -rw-r--r-- | node_modules/webworker-threads/examples/ex06_jason.md | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/node_modules/webworker-threads/examples/ex06_jason.md b/node_modules/webworker-threads/examples/ex06_jason.md new file mode 100644 index 0000000..000c3af --- /dev/null +++ b/node_modules/webworker-threads/examples/ex06_jason.md @@ -0,0 +1,61 @@ +## Passing complex objects to threads + +In the previous examples, we have been using threads with very simple functions and +we have been passing very simple values (integers) between threads. + +This example shows how we can pass more complex data between threads. + +It is important to understand that objects cannot be shared across threads. +This does not prevent us from passing complex objects but we have to serialize them +and pass them as strings. + +If the objects are really simple, we can use JSON serialization but if they contain +information that JSON discards, like methods, we should use the JASON serializer +published on https://github.com/xk/JASON + +In this example, we are going to use a thread to do computation with complex numbers. +We use the Complex and Equation classes defined in the ex06_complex.js file. + +``` javascript +var Equation = require("./ex06_complex").Equation; +``` + +As usual, we create a thread + +``` javascript +var t = require('webworker-threads').create(); +``` + +We require the JASON serializer + +``` javascript +var JASON = require("JASON"); +``` + +We load the JASON serializer and the solve function in our thread: + +``` javascript +t.eval("JASON= "+ JASON.stringify(JASON)); +t.load(__dirname + "/ex06_complex.js") +``` + +Now we can pass a request to solve an equation to our thread. +The expression is wrapped into a `JASON.stringify` call because we want the thread +to stringify the solution object before returning it to the main thread +The main thread calls `JASON.parse` to _de-stringify_ the solution. + +``` javascript +t.eval("JASON.stringify(new Equation(1, -4, 29).solve())", function(err, result) { + if (err) throw err; + var r = JASON.parse(result).join(', '); + console.log("\nsolution is:\n[" + r+ "]\n"); + t.destroy(); +}); +``` + +### Typical Output + +``` +solution is: +[2 - 5i, 2 + 5i] +``` |
