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(); }
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()); }