NAME
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
rdlock
orwrlock
.
AUTHOR/SUPPORT/CONTACT
Marc A. Lehmann <schmorp
@schmorp
.de>