ComposantsThreadChannel::capacity()

ThreadChannel::capacity ​

(PHP 8.6+, True Async 1.0)

php
public ThreadChannel::capacity(): int

Retourne la capacité du canal définie à la construction.

  • 0 — canal non bufferisé (synchrone) : send() bloque jusqu'à ce que le récepteur soit prêt.
  • Nombre positif — nombre maximum de valeurs que le tampon peut contenir simultanément.

La capacité est fixée pour la durée de vie du canal et ne change pas.

Valeurs de retour ​

La capacité du tampon du canal (int).

Exemples ​

Exemple #1 Vérifier la capacité ​

php
<?php

use Async\ThreadChannel;

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

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

Exemple #2 Logique adaptative selon le type de canal ​

php
<?php

use Async\ThreadChannel;

function describeChannel(ThreadChannel $ch): void {
    if ($ch->capacity() === 0) {
        echo "Non bufferisé : chaque send() bloque jusqu'à ce que recv() soit appelé\n";
    } else {
        $free = $ch->capacity() - $ch->count();
        echo "Bufferisé : capacité {$ch->capacity()}, {$free} emplacement(s) libre(s)\n";
    }
}

$ch = new ThreadChannel(8);
$ch->send('item');
describeChannel($ch); // "Buffered: capacity 8, 7 slot(s) free"

Voir aussi ​