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

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