if(!this._manager){ try{ this._manager = google.gears.factory.create("beta.workerpool", "1.0"); this._unemployed = []; this._employed ={}; this._handleMessage = []; var self = this; this._manager.onmessage = function(msg, sender){ // get the callback necessary to serve this result var callback = self._employed["_" + sender]; // make this worker unemployed self._employed["_" + sender] = undefined; self._unemployed.push("_" + sender); // see if we need to assign new work // that was queued up needing to be done if(self._handleMessage.length){ var handleMe = self._handleMessage.shift(); self._assignWork(handleMe.msg, handleMe.callback); } // return results callback(msg); } var workerInit = "function _workerInit(){" + "gearsWorkerPool.onmessage = " + String(this._workerHandler) + ";" + "}"; var code = workerInit + " _workerInit();"; // create our worker pool for(var i = 0; i < this._POOL_SIZE; i++){ this._unemployed.push("_" + this._manager.createWorker(code)); } }catch(exp){ throw exp.message||exp; } }