TaskSet::spawn
(PHP 8.6+, True Async 1.0)
public TaskSet::spawn(callable $task, mixed ...$args): void
Добавляет callable в набор с автоинкрементным ключом (0, 1, 2, …).
Если лимит конкурентности не задан или есть свободный слот — корутина создаётся сразу. Иначе callable с аргументами помещается в очередь и запускается при освобождении слота.
Параметры
- task
- Callable для выполнения. Принимает любой callable: Closure, функцию, метод.
- args
- Аргументы, передаваемые в callable.
Ошибки
Бросает Async\AsyncException, если набор запечатан (seal()) или отменён (cancel()).
Примеры
Пример #1 Базовое использование
<?php
use Async\TaskSet;
spawn(function() {
$set = new TaskSet();
$set->spawn(fn() => "первый");
$set->spawn(fn() => "второй");
$set->seal();
$results = $set->joinAll()->await();
var_dump($results[0]); // string(12) "первый"
var_dump($results[1]); // string(12) "второй"
});
Пример #2 С аргументами
<?php
use Async\TaskSet;
spawn(function() {
$set = new TaskSet();
$set->spawn(function(int $a, int $b) {
return $a + $b;
}, 10, 20);
$set->seal();
$results = $set->joinAll()->await();
var_dump($results[0]); // int(30)
});
См. также
- TaskSet::spawnWithKey — Добавить задачу с явным ключом
- TaskSet::joinAll — Дождаться всех задач