TaskGroup::spawn

(PHP 8.6+, True Async 1.0)

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

Ajoute un callable au groupe avec une cle auto-incrementee (0, 1, 2, …).

Si aucune limite de concurrence n’est definie ou qu’un emplacement est disponible, la coroutine est creee immediatement. Sinon, le callable avec ses arguments est place dans une file d’attente et demarre lorsqu’un emplacement se libere.

Parametres

task
Le callable a executer. Accepte tout callable : Closure, fonction, methode.
args
Arguments passes au callable.

Erreurs

Lance Async\AsyncException si le groupe est scelle (seal()) ou annule (cancel()).

Exemples

Exemple #1 Utilisation de base

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

Exemple #2 Avec des arguments

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

Voir aussi