函式名稱:Swoole\Channel::pop()
函式描述:該函式用於從通道中彈出一個資料,並返回該資料。
適用版本:Swoole擴充套件版本>=4.2.0
用法:
mixed Swoole\Channel::pop([float $timeout = 0])
引數:
- $timeout(可選):等待彈出資料的超時時間,單位為秒,預設為0,表示不設定超時時間。
返回值:
- 成功:返回從通道中彈出的資料。
- 失敗:返回false。
示例:
<?php
$chan = new Swoole\Channel(1024);
// 生產者執行緒
swoole_coroutine_create(function () use ($chan) {
for ($i = 0; $i < 10; $i++) {
$chan->push($i);
}
});
// 消費者執行緒
swoole_coroutine_create(function () use ($chan) {
for ($i = 0; $i < 10; $i++) {
$data = $chan->pop();
echo "Received: $data\n";
}
});
swoole_event_wait();
在上面的示例中,我們建立了一個大小為1024的通道物件$chan。然後,我們建立了一個生產者執行緒,迴圈10次將資料壓入通道中。接著,我們建立了一個消費者執行緒,迴圈10次從通道中彈出資料並列印出來。最後,透過swoole_event_wait()等待所有協程執行完畢。
注意:Swoole\Channel是一個協程安全的通道類,可以在多個協程中同時使用。pop()方法會阻塞當前協程,直到通道中有資料可彈出或超時。如果通道為空且設定了超時時間,則pop()方法會在超時後返回false。