TaskGroup::spawn

(PHP 8.6+, True Async 1.0)

public TaskGroup::spawn(callable $task, mixed ...$args): void

Agrega un callable al grupo con una clave auto-incrementada (0, 1, 2, …).

Si no hay límite de concurrencia establecido o hay un espacio disponible, la corrutina se crea inmediatamente. En caso contrario, el callable con sus argumentos se coloca en una cola y se inicia cuando un espacio quede disponible.

Parámetros

task
El callable a ejecutar. Acepta cualquier callable: Closure, función, método.
args
Argumentos pasados al callable.

Errores

Lanza Async\AsyncException si el grupo está sellado (seal()) o cancelado (cancel()).

Ejemplos

Ejemplo #1 Uso básico

<?php

use Async\TaskGroup;

spawn(function() {
    $group = new TaskGroup();

    $group->spawn(fn() => "primero");
    $group->spawn(fn() => "segundo");

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

    var_dump($results[0]); // string(7) "primero"
    var_dump($results[1]); // string(7) "segundo"
});

Ejemplo #2 Con argumentos

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

Ver también