TaskSet::spawn

(PHP 8.6+, True Async 1.0)

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

Ajoute un callable à l’ensemble avec une clé auto-incrémentée (0, 1, 2, …).

Si aucune limite de concurrence n’est définie ou qu’un emplacement est disponible, la coroutine est créée immédiatement. Sinon, le callable avec ses arguments est placé dans une file d’attente et démarré lorsqu’un emplacement se libère.

Paramètres

task
Callable à exécuter. Accepte tout callable : Closure, fonction, méthode.
args
Arguments passés au callable.

Erreurs

Lance Async\AsyncException si l’ensemble est scellé (seal()) ou annulé (cancel()).

Exemples

Exemple #1 Utilisation de base

<?php

use Async\TaskSet;

spawn(function() {
    $set = new TaskSet();

    $set->spawn(fn() => "first");
    $set->spawn(fn() => "second");

    $set->seal();
    $results = $set->joinAll()->await();

    var_dump($results[0]); // string(5) "first"
    var_dump($results[1]); // string(6) "second"
});

Exemple #2 Avec des arguments

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

Voir aussi