simple_mutex 1.3.2 copy "simple_mutex: ^1.3.2" to clipboard
simple_mutex: ^1.3.2 copied to clipboard

Simple Mutex providing a exclusive write lock and shared read-only locks.

Simple Mutex #

This provids a exclusive write lock and shared read-only locks.

Request for exclusive lock can politely 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';

Usage #

Declaration.

final mutex = Mutex();

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();
}

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();
}

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 will be exhausted.

Additional information #

This mekes use of the event queue as the waiting queue, without additional chain of Completers.

2
likes
0
pub points
33%
popularity

Publisher

unverified uploader

Simple Mutex providing a exclusive write lock and shared read-only locks.

Repository (GitHub)
View/report issues

License

unknown (license)

More

Packages that depend on simple_mutex