Channel::__construct

(PHP 8.6+, True Async 1.0)

public Channel::__construct(int $capacity = 0)

Crea un nuevo canal para pasar datos entre corrutinas.

Un canal es una primitiva de sincronización que permite a las corrutinas intercambiar datos de forma segura. El comportamiento del canal depende del parámetro $capacity:

Parámetros

capacity
La capacidad del búfer interno del canal. 0 — canal rendezvous (por defecto), send bloquea hasta que se reciba. Número positivo — tamaño del búfer.

Ejemplos

Ejemplo #1 Canal rendezvous (sin búfer)

<?php

use Async\Channel;

$channel = new Channel(); // capacity = 0

spawn(function() use ($channel) {
    $channel->send('hello'); // se suspende hasta que alguien llame a recv()
    echo "Enviado\n";
});

spawn(function() use ($channel) {
    $value = $channel->recv(); // recibe 'hello', desbloquea al emisor
    echo "Recibido: $value\n";
});

Ejemplo #2 Canal con búfer

<?php

use Async\Channel;

$channel = new Channel(3); // búfer para 3 elementos

spawn(function() use ($channel) {
    $channel->send(1); // no bloquea — el búfer está vacío
    $channel->send(2); // no bloquea — hay espacio disponible
    $channel->send(3); // no bloquea — última posición
    $channel->send(4); // se suspende — el búfer está lleno
});

Ver también