TaskGroup::spawn
(PHP 8.6+, True Async 1.0)
public TaskGroup::spawn(callable $task, mixed ...$args): void
以自动递增的键(0, 1, 2, …)向组中添加一个可调用对象。
如果未设置并发限制或有可用槽位,协程会立即创建。 否则,可调用对象及其参数会放入队列,在有空闲槽位时自动启动。
参数
- task
- 要执行的可调用对象。接受任何可调用类型:Closure、函数、方法。
- args
- 传递给可调用对象的参数。
错误
如果组已密封(seal())或已取消(cancel()),抛出 Async\AsyncException。
示例
示例 #1 基本用法
<?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"
});
示例 #2 带参数
<?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"
});
参见
- TaskGroup::spawnWithKey — 以显式键添加任务
- TaskGroup::all — 等待所有任务