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() => "первый");
    $group->spawn(fn() => "второй");

    $group->seal();
    $results = $group->all();

    var_dump($results[0]); // string(12) "первый"
    var_dump($results[1]); // string(12) "второй"
});

Пример #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"
});

См. также