TaskSet::spawn
(PHP 8.6+, True Async 1.0)
php
public TaskSet::spawn(callable $task, mixed ...$args): voidAgrega un callable al conjunto con una clave auto-incremental (0, 1, 2, ...).
Si no hay límite de concurrencia configurado o hay un slot disponible, la coroutine se crea inmediatamente. De lo contrario, el callable con sus argumentos se coloca en una cola y se inicia cuando un slot quede disponible.
Parámetros
task : Callable a ejecutar. Acepta cualquier callable: Closure, función, método.
args : Argumentos pasados al callable.
Errores
Lanza Async\AsyncException si el conjunto está sellado (seal()) o cancelado (cancel()).
Ejemplos
Ejemplo #1 Uso básico
php
<?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"
});Ejemplo #2 Con argumentos
php
<?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)
});Ver también
- TaskSet::spawnWithKey — Agregar una tarea con clave explícita
- TaskSet::joinAll — Esperar todas las tareas