---
name: "Coro::RWLock"
section: "3pm"
platform: "linux"
package: "libcoro-perl"
version: "6.570-4"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/Coro::RWLock"
---

# Coro::RWLock(3pm)

reader/write locks

## 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
```
