Swoole 中使用通道(Channel)实现协程间通讯(消息队列)

通道

Coroutine\Channel 使用本地内存,不同的进程之间内存是隔离的。

只能在同一进程的不同协程内进行 push 和 pop 操作。

Co::set(['hook_flags'=> SWOOLE_HOOK_ALL]);Co\run(function(){// 设置一个容量为1的通道$chan =newSwoole\Coroutine\Channel(1);        Swoole\Coroutine::create(function()use($chan){for($i =0; $i <100000; $i++) {            co::sleep(1.0);// 向通道中写入数据,通道已满时会排队等候$chan->push(['rand'=> rand(1000,9999),'index'=> $i]);echo"$i pushed! \n";        }    });        Swoole\Coroutine::create(function()use($chan){while(1) {            $data = $chan->pop();            var_dump($data);        }    });});

通道

Coroutine\Channel 使用本地内存,不同的进程之间内存是隔离的。

只能在同一进程的不同协程内进行 push 和 pop 操作。

Co::set(['hook_flags'=> SWOOLE_HOOK_ALL]);Co\run(function(){// 设置一个容量为1的通道$chan =newSwoole\Coroutine\Channel(1);        Swoole\Coroutine::create(function()use($chan){for($i =0; $i <100000; $i++) {            co::sleep(1.0);// 向通道中写入数据,通道已满时会排队等候$chan->push(['rand'=> rand(1000,9999),'index'=> $i]);echo"$i pushed! \n";        }    });        Swoole\Coroutine::create(function()use($chan){while(1) {            $data = $chan->pop();            var_dump($data);        }    });});

亚马逊测评 www.yisuping.com

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。