TaskGroup::spawn

(PHP 8.6+, True Async 1.0)

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

자동 증가 키(0, 1, 2, …)로 그룹에 callable을 추가합니다.

동시성 제한이 설정되지 않았거나 슬롯이 사용 가능한 경우, 코루틴이 즉시 생성됩니다. 그렇지 않으면 callable과 인자가 대기열에 배치되고 슬롯이 사용 가능해지면 시작됩니다.

매개변수

task
실행할 callable입니다. Closure, 함수, 메서드 등 모든 callable을 받습니다.
args
callable에 전달되는 인자입니다.

오류

그룹이 봉인(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"
});

참고