Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // server.js
- var sys = require('sys'),
- http = require('http'),
- Worker = require('worker').Worker;
- var WORKER_COUNT = 4;
- var responses = {};
- var pool = [];
- for (var i = 0; i < WORKER_COUNT; ++i) {
- var worker = new Worker("./child.js");
- worker.addListener("message", function (msg) {
- var res = responses[msg.call];
- delete responses[msg.call];
- res.sendHeader(200, {'Content-Type': 'text/plain'});
- res.sendBody(msg.data+"");
- res.finish();
- });
- worker.addListener("error", function (error) {
- sys.puts("Worker error "+error)
- })
- pool.push(worker);
- sys.puts('Started worker process.');
- }
- var call = 0;
- http.createServer(function (req, res) {
- var worker = pool[ call % pool.length ];
- worker.postMessage({
- call: call,
- request: req.uri
- });
- responses[call] = res;
- sys.puts("Send call " + call);
- ++call;
- }).listen(8000);
- sys.puts('Server running at http://127.0.0.1:8000/');
- // child.js
- var sys = require('sys');
- var worker = require('worker').worker;
- worker.onmessage = function (msg)�{
- sys.error("HANDLE");
- worker.postMessage({
- call: msg.call,
- data: fib( parseInt( msg.request.params.n, 10 ) )
- })
- }
- function fib(n) {
- return n < 2 ? n : fib(n-1)+fib(n-2);
- }
Advertisement
Add Comment
Please, Sign In to add comment