0 purchases
simple mutex
Simple Mutex #
This provids a exclusive write lock and shared read-only locks.
Request for exclusive lock can gracefully interrupt multiple parallel
loops acquiring shared locks.
Features #
Literally mutually exclusive lock, for read/ write user of resources.
Shared locks, for read-only users.
Eclusive critical section helper with retrun value.
Shared critical section helper with return value.
Getting started #
import 'simple_mutex/simple_mutex.dart';
copied to clipboard
Usage #
Declaration.
final mutex = Mutex();
copied to clipboard
Protect asynchronous critical section with mutually exclusive lock.
await mutex.lock();
try {
// Some mutually exclusive asynchronous critical section.
// This prevent entering other mutually exclusive/ shared critical sections.
} finally {
mutex.unlock();
}
copied to clipboard
Protect asynchronous critical section with shared lock.
await mutex.lockShared();
try {
// Some shared asynchronous critical section.
// This prevent entering other mutually exclusive critical sections.
// On the other hand, this can be run in parallel with other shared
// critical sections.
} finally {
mutex.unlockShared();
}
copied to clipboard
To avoid leaking lock in exceptional cases, critical and criticalShared
are recommended.
Lint unawaited_futures is also recommended, because if you miss await
for critical or criticalShared, memory would be exhausted.
For personal and professional use. You cannot resell or redistribute these repositories in their original state.
There are no reviews.