azjezz / mutex
Mutex 锁定用于黑客项目
1.0.0
2019-03-01 16:59 UTC
Requires
- hhvm: ^4.0
- hhvm/hhvm-autoload: ^2.0
- hhvm/hsl: ^4.0
Requires (Dev)
- facebook/fbexpect: ^2.5
- hhvm/hacktest: ^1.4
- hhvm/hhast: ^4.0
This package is auto-updated.
Last update: 2024-09-19 09:00:51 UTC
README
由 WyriHaximus 实现的 reactphp-muxted
的 Hack 实现。
安装
要通过 Composer 安装,请使用以下命令
composer require azjezz/mutex
关于
此包提供以下两项功能
- 一个用于
mutex
锁定 的接口 - 该接口的内存实现
示例
use namespace AzJezz\Mutex; use namespace HH\Asio; require 'vendor/autoload.hack'; <<__EntryPoint>> async function main(): Awaitable<void> { Facebook\AutoloadMap\initialize(); $mutex = new Mutex\Memory(); $jobs = vec[ foo($mutex), // first to acquire the lock foo($mutex), // won't be able to acquire the lock foo($mutex), // same ]; foreach($jobs as $job) { await $job; } } async function foo( Mutex\MutexInterface $mutex ): Awaitable<void> { $lock = await $mutex->acquire('foo'); if ($lock is nonnull) { echo "doing things \n"; await Asio\usleep(10000000); echo "finished my job, releasing the lock \n"; await $mutex->release($lock); return; } echo "someone else have requested the 'foo' lock\n"; }
许可证
Mutex 项目是开源软件,根据 MIT 许可证授权。