haoa / util
v1.17
2026-08-14 12:04 UTC
Requires
- hyperf/coroutine: ^3.1
- psr/log: ^3.0
Requires (Dev)
- phpunit/phpunit: ^10.0
- swoole/ide-helper: ^6.0
README
Haoa 项目的通用基础工具。
对象级协程互斥锁
Haoa\Util\Coroutine\ObjectMutex 由使用它的对象直接持有,适合保护连接、
Channel、连接池等对象内部状态。不同实例互不影响,也不需要维护全局锁 key。
use Haoa\Util\Coroutine\ObjectMutex; $mutex = new ObjectMutex('connection-state'); if (!$mutex->lock(1.0)) { throw new RuntimeException('等待连接状态锁超时'); } try { // 允许发生协程切换的临界区。 } finally { $mutex->unlock(); } $mutex->close();
lock()必须传入大于 0 的有限超时,超时或锁已关闭时返回false。tryLock()用于不等待的立即尝试。unlock()必须放在finally中,未加锁或重复解锁会抛出LogicException。close()会唤醒等待者并禁止后续获取,可以重复调用。