(PECL pthreads >= 2.0.0)
Collect references to completed tasks
public void Pool::collect ( Callable $collector )
Allows the Pool to collect references determined to be garbage by the given collector
Parameters:
collector
A Callable collector
Returns:
void
Examples:
Creating Pools
<?php class MyWork extends Stackable { public function __construct() { $this->complete = false; } public function run() { printf( "Hello from %s in Thread #%lu\n", __CLASS__, $this->worker->getThreadId()); $this->complete = true; } public function isComplete() { return $this->complete; } protected $complete; } class MyWorker extends Worker { public function __construct(Something $something) { $this->something = $something; } public function run() { /** ... **/ } } $pool = new Pool(8, \MyWorker::class, [new Something()]); $pool->submit(new MyWork()); usleep(1000); $pool->collect(function($work){ return $work->isComplete(); }); var_dump($pool); ?>
The above example will output:
Hello from MyWork in Thread #140222468777728 object(Pool)#1 (6) { ["size":protected]=> int(8) ["class":protected]=> string(8) "MyWorker" ["workers":protected]=> array(1) { [0]=> object(MyWorker)#4 (1) { ["something"]=> object(Something)#5 (0) { } } } ["work":protected]=> array(0) { } ["ctor":protected]=> array(1) { [0]=> object(Something)#2 (0) { } } ["last":protected]=> int(1) }
Please login to continue.