TaskSet::spawn
(PHP 8.6+, True Async 1.0)
public TaskSet::spawn(callable $task, mixed ...$args): void
Agrega 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
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
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