Coro::RWLock#
reader/write locks
SYNOPSIS#
use Coro;
$lck = new Coro::RWLock;
$lck->rdlock; # acquire read lock
$lck->unlock; # unlock lock again
## or:
$lck->wrlock; # acquire write lock
$lck->unlock; # unlock lock again
## try a readlock
if ($lck->tryrdlock) {
...;
$l->unlock;
}
## try a write lock
if ($lck->trywrlock) {
...;
$l->unlock;
}
DESCRIPTION#
This module implements reader/write locks. A read can be acquired for read by many coroutines in parallel as long as no writer has locked it (shared access). A single write lock can be acquired when no readers exist. RWLocks basically allow many concurrent readers (without writers) OR a single writer (but no readers).
You don’t have to load Coro::RWLock manually, it will be loaded automatically when you use Coro and call the new constructor.
$l = new Coro::RWLock;
Create a new reader/writer lock.
$l->rdlock
Acquire a read lock.
$l->tryrdlock
Try to acquire a read lock.
$l->wrlock
Acquire a write lock.
$l->trywrlock
Try to acquire a write lock.
$l->unlock
Give up a previous
rdlockorwrlock.