Files
zhamao-framework/src/ZM/Store/ZMAtomic.php

48 lines
1.2 KiB
PHP
Raw Normal View History

2020-11-03 21:02:24 +08:00
<?php
declare(strict_types=1);
2020-11-03 21:02:24 +08:00
namespace ZM\Store;
use Swoole\Atomic;
use ZM\Config\ZMConfig;
class ZMAtomic
{
/** @var Atomic[] */
public static $atomics;
/**
* @param $name
*/
public static function get($name): ?Atomic
{
2020-11-03 21:02:24 +08:00
return self::$atomics[$name] ?? null;
}
/**
* 初始化atomic计数器
*/
public static function init()
{
foreach ((ZMConfig::get('global', 'init_atomics') ?? []) as $k => $v) {
2020-11-03 21:02:24 +08:00
self::$atomics[$k] = new Atomic($v);
}
self::$atomics['stop_signal'] = new Atomic(0);
self::$atomics['_int_is_reload'] = new Atomic(0);
self::$atomics['wait_msg_id'] = new Atomic(0);
self::$atomics['_event_id'] = new Atomic(0);
self::$atomics['server_is_stopped'] = new Atomic(0);
if (!defined('ZM_WORKER_NUM')) {
define('ZM_WORKER_NUM', 1);
}
for ($i = 0; $i < ZM_WORKER_NUM; ++$i) {
self::$atomics['_#worker_' . $i] = new Atomic(0);
}
2020-11-03 21:02:24 +08:00
for ($i = 0; $i < 10; ++$i) {
self::$atomics['_tmp_' . $i] = new Atomic(0);
2020-11-03 21:02:24 +08:00
}
self::$atomics['ss'] = new Atomic(1);
2020-11-03 21:02:24 +08:00
}
}