zoukankan      html  css  js  c++  java
  • Swoole 中使用 Atomic 实现进程间无锁计数器

    使用示例:

    $atomic = new SwooleAtomic();
    
    $serv = new SwooleServer('127.0.0.1', '9501');
    $serv->set([
        'worker_num' => 1,
        'log_file' => '/dev/null'
    ]);
    
    // 主进程启动时触发,与管理进程并行启动
    $serv->on("start", function ($serv) use ($atomic) {
        if ($atomic->add() == 2) {
            $serv->shutdown();
        }
    });
    
    // 管理进程启动时触发,与主进程并行启动
    $serv->on("ManagerStart", function ($serv) use ($atomic) {
        if ($atomic->add() == 2) {
            $serv->shutdown();
        }
    });
    
    // 管理进程结束时触发,这时 Task 和 Worker 进程已结束运行,已被 Manager 进程回收
    $serv->on("ManagerStop", function ($serv) {
        echo "shutdown
    ";
    });
    
    $serv->on("Receive", function () {
    
    });
    
    $serv->start();
    

    服务器启动成功后,onStart/onManagerStart/onWorkerStart 会在不同的进程内并发执行。

    onStart/onManagerStart/onWorkerStart 3 个事件的执行顺序是不确定的。

  • 相关阅读:
    小丑火棘
    凤尾竹
    红王子锦带
    吊兰
    清香木
    鸢尾
    夏鹃
    牡丹吊兰
    美人蕉
    粉花绣线菊
  • 原文地址:https://www.cnblogs.com/danhuang/p/13341399.html
Copyright © 2011-2022 走看看