azjezz / mutex
Mutex Locking for hack projects
Installs: 2
Dependents: 0
Suggesters: 0
Security: 0
Stars: 1
Watchers: 3
Forks: 0
Open Issues: 2
Language:Hack
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-11-19 09:18:07 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
mutex
locking - 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.