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


    通道

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

    只能在同一进程的不同协程内进行 pushpop 操作。

    Co::set(['hook_flags'=> SWOOLE_HOOK_ALL]);
    Co
    un(function(){
        // 设置一个容量为1的通道
        $chan = new SwooleCoroutineChannel(1);
        
        SwooleCoroutine::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! 
    ";
            }
        });
        
        SwooleCoroutine::create(function () use ($chan) {
            while(1) {
                $data = $chan->pop();
                var_dump($data);
            }
        });
    });
    
  • 相关阅读:
    最短路(Floyed、Dijkstra、Bellman-Ford、SPFA)
    查找技术
    简单线段树
    dfs
    bfs
    插件工具集合
    Web前端代码规范
    Javascript 判断手机横竖屏状态
    Git 笔记2
    git 笔记 1
  • 原文地址:https://www.cnblogs.com/danhuang/p/13267888.html
Copyright © 2020-2023  润新知