Channel::isEmpty
(PHP 8.6+, True Async 1.0)
php
public Channel::isEmpty(): boolПеревіряє, чи буфер каналу порожній (немає значень, доступних для отримання).
Для каналу рандеву (capacity = 0) завжди повертає true, оскільки дані передаються напряму без буферизації.
Значення, що повертаються
true — буфер порожній. false — буфер містить значення.
Приклади
Приклад #1 Перевірка наявності даних
php
<?php
use Async\Channel;
$channel = new Channel(5);
echo $channel->isEmpty() ? "empty" : "has data"; // "empty"
$channel->send(42);
echo $channel->isEmpty() ? "empty" : "has data"; // "has data"Приклад #2 Пакетна обробка даних
php
<?php
use Async\Channel;
$channel = new Channel(100);
spawn(function() use ($channel) {
while (!$channel->isClosed() || !$channel->isEmpty()) {
if ($channel->isEmpty()) {
delay(50); // чекаємо на надходження даних
continue;
}
$batch = [];
while (!$channel->isEmpty() && count($batch) < 10) {
$batch[] = $channel->recv();
}
processBatch($batch);
}
});Дивіться також
- Channel::isFull --- Перевірити, чи буфер заповнений
- Channel::count --- Кількість значень у буфері
- Channel::recv --- Отримати значення