ComponentiThreadChannel::capacity()

ThreadChannel::capacity

(PHP 8.6+, True Async 1.0)

php
public ThreadChannel::capacity(): int

Restituisce la capacità del canale impostata al momento della costruzione.

  • 0 — canale non bufferizzato (sincrono): send() si blocca fino a quando il ricevitore è pronto.
  • Numero positivo — numero massimo di valori che il buffer può contenere simultaneamente.

La capacità è fissa per tutta la durata del canale e non cambia.

Valori restituiti

La capacità del buffer del canale (int).

Esempi

Esempio #1 Verifica della capacità

php
<?php

use Async\ThreadChannel;

$unbuffered = new ThreadChannel();
echo $unbuffered->capacity(); // 0

$buffered = new ThreadChannel(64);
echo $buffered->capacity(); // 64

Esempio #2 Logica adattiva basata sul tipo di canale

php
<?php

use Async\ThreadChannel;

function describeChannel(ThreadChannel $ch): void {
    if ($ch->capacity() === 0) {
        echo "Non bufferizzato: ogni send() si blocca fino alla chiamata recv()\n";
    } else {
        $free = $ch->capacity() - $ch->count();
        echo "Bufferizzato: capacità {$ch->capacity()}, {$free} posto/i libero/i\n";
    }
}

$ch = new ThreadChannel(8);
$ch->send('item');
describeChannel($ch); // "Bufferizzato: capacità 8, 7 posto/i libero/i"

Vedere anche