09/02
2014
Wallogit.com
2017 © Pedro Peláez
Pool implementation for pthreads
An implementation of a thread pool for pthreads, (*1)
namespace Camspiers\Pthreads;
require_once 'vendor/autoload.php';
class Job extends Work
{
protected function process()
{
// Do some work, and optionally return some data
return range(1, 1000);
}
}
$pool = new Pool();
for ($i = 0; $i < 1000; $i++) {
$pool->submitWork(new Job());
}
// get jobs as they finish
foreach ($pool->getFinishedJobs() as $job) {
var_dump($job->getData());
}
$pool->shutdown();
In pthreads you need to register a autoload in each thread (or worker). The can be achieved by setting a loader
on the pool., (*2)
$loader = require 'vendor/autoload.php'; $pool = new \Camspiers\Pthreads\Pool(); $pool->setLoader($loader); // Use the pool