Thread::isCompleted

(PHP 8.6+, True Async 1.0)

php
public Thread::isCompleted(): bool

Возвращает true, если поток завершил выполнение — независимо от причины: успешный возврат значения, выброс исключения или отмена. После перехода в состояние true оно уже не изменится.

Возвращаемое значение

booltrue, если поток завершён; false, если ещё выполняется.

Примеры

Пример #1 Неблокирующая проверка перед getResult()

php
<?php

use function Async\spawn;
use function Async\spawn_thread;
use function Async\suspend;

spawn(function() {
    $thread = spawn_thread(function() {
        return "результат";
    });

    // Отдаём управление, чтобы поток успел завершиться
    suspend();

    if ($thread->isCompleted()) {
        echo "Результат: " . $thread->getResult() . "\n";
    } else {
        echo "Поток ещё не завершён\n";
    }
});

Пример #2 Ожидание завершения нескольких потоков

php
<?php

use function Async\spawn;
use function Async\spawn_thread;
use function Async\suspend;

spawn(function() {
    $threads = [
        spawn_thread(fn() => heavyTask(1)),
        spawn_thread(fn() => heavyTask(2)),
        spawn_thread(fn() => heavyTask(3)),
    ];

    // Ждём, пока все завершатся
    do {
        suspend();
        $pending = array_filter($threads, fn($t) => !$t->isCompleted());
    } while (!empty($pending));

    foreach ($threads as $i => $thread) {
        echo "Поток $i: " . $thread->getResult() . "\n";
    }
});

См. также