WorkerPool组件也是通过google.gears.factory.create 方法来创建的:

  
    var wp = google.gears.factory.create('beta.workerpool', '1.0');



他相当于线程, WorkerPool里Workers使用sendMessage() 方法来通信, 这些Workers可通过全局变量生成的子workers。

        google.gears.workerPool




sendMessage() 接收两个参数:要发送的message字符串和接收message的workers的ID.

当一个worker被初始化的时候,它应该会设置一个workerPool的onmessage属性为一个方法句柄,这样的话,任何时候只要它收到消息就会调用这个方法。一旦运行,workers可以彼此发送字符串,从而触发onmessage句柄。

Workers 是被一个父类worker pool对象通过调用createWorker()方法来创建的。 createWorker() 返回一个新被创建的worker的 worker ID 。 这个方法接收一个单独的字符串参数,包括子worker应该执行的代码(请记住, javascript里可以把一个function转换为字符串,比如 String(myFunction))。
这有个例子:

   
var wp = google.gears.factory.create('beta.workerpool', '1.0');
        childCode = String(evalHandler) +
        'google.gears.workerPool.onmessage = evalHandler;';

        wp.onmessage = parentHandler;

        var childId = wp.createWorker(childCode);
        wp.sendMessage('2+2', childId);

        function parentHandler(msg, sender) {
        var r = document.getElementById('result');
        r.innerHTML = msg;
        }

        function evalHandler( msg, sender ) {
        var result = eval(msg);
        google.gears.workerPool.sendMessage(String(result), sender);
        }


注意,这个例子里,子worker发送result到父worker,然后父worker修改了document去显示结果,子worker不能直接操纵DOM结构,因为它是作为一个单独的“线程”来执行的,并且和“父”脚本是不能共享状态的。