查詢

Swoole\Channel::pop()函式—用法及示例

「 從通道中彈出一個資料,並返回該資料 」


函式名稱: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。

補充糾錯
上一個函式: Swoole\Channel::push()函式
熱門PHP函式
分享連結