Channel::isClosed

(PHP 8.6+, True Async 1.0)

public Channel::isClosed(): bool

Verifica se il canale e’ stato chiuso da una chiamata a close().

Un canale chiuso non accetta nuovi valori tramite send(), ma consente la lettura dei valori rimanenti dal buffer tramite recv().

Valori di ritorno

true — il canale e’ chiuso. false — il canale e’ aperto.

Esempi

Esempio #1 Verifica dello stato del canale

<?php

use Async\Channel;

$channel = new Channel(5);

echo $channel->isClosed() ? "chiuso" : "aperto"; // "aperto"

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

echo $channel->isClosed() ? "chiuso" : "aperto"; // "chiuso"

// E' ancora possibile leggere il buffer anche dopo la chiusura
$value = $channel->recv(); // "data"

Esempio #2 Invio condizionale

<?php

use Async\Channel;

$channel = new Channel(10);

spawn(function() use ($channel) {
    while (!$channel->isClosed()) {
        $data = produceData();
        $channel->send($data);
        delay(100);
    }
    echo "Canale chiuso, invii interrotti\n";
});

Vedi anche