• Atomic
    • 64位长整型
    • 使用示例

    Atomic

    swoole_atomic是swoole扩展提供的原子计数操作类,可以方便整数的无锁原子增减。

    • swoole_atomic使用共享内存,可以在不同的进程之间操作计数
    • swoole_atomic基于gcc提供的CPU原子指令,无需加锁
    • swoole_atomic在服务器程序中必须在swoole_server->start前创建才能在Worker进程中使用
    • swoole_atomic默认使用32位无符号类型,如需要64有符号整型,可使用Swoole\Atomic\Long
      注意:请勿在onReceive等回调函数中创建原子数,否则底层的GlobalMemory内存会持续增长,造成内存泄漏。
    swoole_atomic1.7.19以上版本可用 Swoole\Atomic\Long1.9.20以上版本可用

    64位长整型

    1.9.20版本增加了对64位有符号长整型原子计数的支持。使用new Swoole\Atomic\Long 来创建。

    • Swoole\Atomic\Long 不支持waitwakeup方法

    使用示例

    1. $atomic = new swoole_atomic(123);
    2. echo $atomic->add(12)."\n";
    3. echo $atomic->sub(11)."\n";
    4. echo $atomic->cmpset(122, 999)."\n";
    5. echo $atomic->cmpset(124, 999)."\n";
    6. echo $atomic->get()."\n";