TaskGroup::spawn
(PHP 8.6+, True Async 1.0)
public TaskGroup::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\TaskGroup;
spawn(function() {
$group = new TaskGroup();
$group->spawn(fn() => "first");
$group->spawn(fn() => "second");
$group->seal();
$results = $group->all();
var_dump($results[0]); // string(5) "first"
var_dump($results[1]); // string(6) "second"
});
Приклад #2 З аргументами
<?php
use Async\TaskGroup;
spawn(function() {
$group = new TaskGroup();
$group->spawn(function(int $id) {
return "user:$id";
}, 42);
$group->seal();
$results = $group->all();
var_dump($results[0]); // string(7) "user:42"
});
Дивіться також
- TaskGroup::spawnWithKey — Додати задачу з явним ключем
- TaskGroup::all — Дочекатися всіх задач