haoa/util

Maintainers

Package info

github.com/hao-php/util

pkg:composer/haoa/util

Transparency log

Statistics

Installs: 44

Dependents: 3

Suggesters: 0

Stars: 0

Open Issues: 0

v1.17 2026-08-14 12:04 UTC

This package is not auto-updated.

Last update: 2026-08-14 12:06:03 UTC


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() 会唤醒等待者并禁止后续获取,可以重复调用。