English | 简体中文 | 繁體中文
查询

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函数
分享链接