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"
});

Дивіться також