Atomic
swoole_atomic是swoole扩展提供的原子计数操作类,可以方便整数的无锁原子增减。
- swoole_atomic使用共享内存,可以在不同的进程之间操作计数
- swoole_atomic基于gcc提供的CPU原子指令,无需加锁
- swoole_atomic在服务器程序中必须在swoole_server->start前创建才能在Worker进程中使用
注意:请勿在onReceive
等回调函数中创建原子数,否则底层的GlobalMemory内存不足会创建失败。在swoole中可以创建的Atomic对象数量有限
swoole_atomic在1.7.19以上版本可用
使用示例
$atomic = new swoole_atomic(123); echo $atomic->add(12)."\n"; echo $atomic->sub(11)."\n"; echo $atomic->cmpset(122, 999)."\n"; echo $atomic->cmpset(124, 999)."\n"; echo $atomic->get()."\n";