G0574's Archiver

弯月圆刀 发表于 2008-9-23 16:52

gear 的workpool

[code]<script type="text/javascript" src="gears_init.js"></script>
<script type="text/javascript">
// main.js
var workerPool = google.gears.factory.create('beta.workerpool');

workerPool.onmessage = function(a, b, message) {
  alert('Received message from worker ' + message.sender + ': \n' + message.body);
};

var childWorkerId = workerPool.createWorkerFromUrl('worker.js');

workerPool.sendMessage(["3..2..", 1, {helloWorld: "Hello world!"}], childWorkerId);
</script>// worker.js
var wp = google.gears.workerPool;
wp.onmessage = function(a, b, message) {
  var reply = message.body[0] + message.body[1] + "... " + message.body[2].helloWorld;
  wp.sendMessage(reply, message.sender);
}[/code]这段代码演示了使用方法。

1、用google.gears.factory 产生一个新的WorkPool(父work),wp
2、设定父work的onmessage,当这个父work收到消息时的处理程序
3、对于每个新的子work。
a、父work通过createWorkerFromUrl() 产生。
b、createWorkerFromUrl()立马返回
c、子work里面的代码执行一次,同时这个代码里面必须写好onmessage函数,这个函数定义在预定义的google.gears.workerPool对象上面。

[color=Sienna]在产生work的时候,父work和子work有点不同,但是一经产生,在相互通讯的时候,是没有什么差别的。[/color]

work之间的通讯。有两种主要的方法:
1、从onmessage的参数中可以得到sender_id。
2、在creatework的时候可以知道一个work的id,保留这个id就可以多次使用。

[[i] 本帖最后由 弯月圆刀 于 2008-9-23 16:53 编辑 [/i]]

页: [1]

Powered by Discuz! Archiver 6.1.0  © 2001-2007 Comsenz Inc.