azjezz / mutex
Mutex Locking for hack projects
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: 2026-02-19 12:33:39 UTC
README
Hack implementation of reactphp-muxted by WyriHaximus.
Install
To install via Composer, use the command below :
composer require azjezz/mutex
About
This package provides two things:
- An interface for
mutexlocking - A in-memory implementation of that interface
Example
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"; }
License
The Mutex Project is open-sourced software licensed under the MIT-licensed.