Как работает Pool :: collect?

Помогите мне понять, как именно работает Pool :: collect.

Pool :: collect - собирает ссылки на выполненные задачи

public void Pool::collect ( Callable $collector )

То, что я предполагаю, было:Pool::collect регистрирует функцию, которая будет вызываться после каждого\Threaded $task выполнен. Так я и сделал:

<?php
$pool = new Pool(4);
$pool->collect($collector);
$pool->submit(new Task);

Не сработало Но следующее делает:

<?php
$pool = new Pool(4);
$pool->submit(new Task);
$pool->collect($collector);

Итак, я думаю, чтоPool::collect делает это: прикрепляет$collector для каждого\Threaded $task ранее представлен.

Теперь, когда именно$collector называется? Я полагаю, был вызван послеThreaded::run() выполнен. Опять не так.

<?php
class Task extends Threaded {
    public function run () { echo "Task complete\n"; }
}

$collector = function (\Task $task) {
    echo "Collect task\n";
    return true;
};

$pool = new Pool(4);
$pool->submit(new Task);
$pool->collect($collector);
$pool->shutdown();

Выходы:

Collect task
Task complete

$collector называется раньшеThreaded::run() выполнен.

Документация не говорит много. Разве событие не говорит о том, что$collector должен вернуть логическое значение.Я этого не знала.

Я пытался использовать Pool :: collect как своего рода обратный вызов после того, как каждое задание $ выполнено. Я думаю, что я на неправильном пути.

Редактировать 1.Как насчет этой попытки?

Ответы на вопрос(2)

Ваш ответ на вопрос