public function main()
 {
     @(include_once 'phing/contrib/DocBlox/Parallel/Manager.php');
     @(include_once 'phing/contrib/DocBlox/Parallel/Worker.php');
     @(include_once 'phing/contrib/DocBlox/Parallel/WorkerPipe.php');
     if (!class_exists('DocBlox_Parallel_Worker')) {
         throw new BuildException('ParallelTask depends on DocBlox being installed and on include_path.', $this->getLocation());
     }
     $mgr = new DocBlox_Parallel_Manager();
     $mgr->setProcessLimit($this->threadCount);
     foreach ($this->nestedTasks as $task) {
         $worker = new DocBlox_Parallel_Worker(array($task, 'perform'), array($task));
         $mgr->addWorker($worker);
     }
     $mgr->execute();
 }
Beispiel #2
0
    var_dump($worker->getResult());
}
// -----------------------------------------------------------------------------
// method 2: using the manager as worker array
// -----------------------------------------------------------------------------
$mgr = new DocBlox_Parallel_Manager();
$mgr[] = new DocBlox_Parallel_Worker(function () {
    sleep(1);
    return 'f';
});
$mgr[] = new DocBlox_Parallel_Worker(function () {
    sleep(1);
    return 'g';
});
$mgr[] = new DocBlox_Parallel_Worker(function () {
    sleep(1);
    return 'h';
});
$mgr[] = new DocBlox_Parallel_Worker(function () {
    sleep(1);
    return 'i';
});
$mgr[] = new DocBlox_Parallel_Worker(function () {
    sleep(1);
    return 'j';
});
$mgr->execute();
/** @var DocBlox_Parallel_Worker $worker */
foreach ($mgr as $worker) {
    var_dump($worker->getResult());
}