Channel::isClosed

(PHP 8.6+, True Async 1.0)

public Channel::isClosed(): bool

Перевіряє, чи був канал закритий викликом close().

Закритий канал не приймає нові значення через send(), але дозволяє читати залишкові значення з буфера через recv().

Значення, що повертаються

true — канал закрито. false — канал відкрито.

Приклади

Приклад #1 Перевірка стану каналу

<?php

use Async\Channel;

$channel = new Channel(5);

echo $channel->isClosed() ? "closed" : "open"; // "open"

$channel->send('data');
$channel->close();

echo $channel->isClosed() ? "closed" : "open"; // "closed"

// Можна читати буфер навіть після закриття
$value = $channel->recv(); // "data"

Приклад #2 Умовне відправлення

<?php

use Async\Channel;

$channel = new Channel(10);

spawn(function() use ($channel) {
    while (!$channel->isClosed()) {
        $data = produceData();
        $channel->send($data);
        delay(100);
    }
    echo "Канал закрито, зупиняємо відправлення\n";
});

Дивіться також