Coroutine\Channel->pop

从通道中读取数据。

function Coroutine\Channel->pop(float $timeout = 0) : mixed;
  • 返回值可以是任意类型的PHP变量,包括匿名函数和资源
  • 通道并关闭时,执行失败返回false
  • $timeout指定超时时间,浮点型,单位为秒,最小粒度为毫秒,在规定时间内没有生产者push数据,将返回false

$timeout参数在4.0.3或更高版本可用

通道已满

  • pop消费数据后,将自动唤醒其中一个生产者协程,让其写入新数据
  • 多个生产者协程同时push时,底层自动进行排队,按照顺序逐个resume这些生产者协程

通道为空

  • 自动yield当前协程,其他生产者协程push生产数据后,通道可读,将重新resume当前协程
  • 多个消费者协程同时pop时,底层自动进行排队,底层会按照顺序逐个resume这些消费者协程