RWLock(3p)

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" or "wrlock".

AUTHOR/SUPPORT/CONTACT
   Marc A. Lehmann <schmorp@schmorp.de>
   http://software.schmorp.de/pkg/Coro.html