---
name: "pthread_rwlock_timedwrlock"
section: "3"
platform: "freebsd"
package: "base"
version: "16.0-CURRENT-20261027-61c70dc16a79"
release: "FreeBSD 16.0-CURRENT (2026-10-27)"
platforms: ["freebsd"]
url: "https://new.carta.tech/pthread_rwlock_timedwrlock"
---

# pthread\_rwlock\_timedwrlock(3)

acquire a read-write lock for writing or give up after a specified period

## NAME

**pthread\_rwlock\_timedwrlock** – acquire a read-write lock for writing or give up after a specified period

## LIBRARY

POSIX Threads Library (libpthread, -lpthread)

## SYNOPSIS

**#include \<pthread.h\>**

*int*\

**pthread\_rwlock\_timedwrlock**(*pthread\_rwlock\_t \*restrict rwlock*, *const struct timespec \*restrict abs\_timeout*);

## DESCRIPTION

This function acquires a write lock on the read-write lock *rwlock*. However, if the lock cannot be acquired without waiting for another thread to unlock the lock, this wait shall be terminated when *abs\_timeout* expires.

If the thread should be interrupted by a signal, the **pthread\_rwlock\_timedwrlock**() function will be automatically restarted after the thread returns from the signal handler.

The calling thread may deadlock if at the time the call is made it holds *rwlock*. The results are undefined if this function is called with an uninitialized read-write lock.

## IMPLEMENTATION NOTES

To prevent writer starvation, writers are favored over readers.

## RETURN VALUES

If successful, the **pthread\_rwlock\_timedwrlock**() function will return zero. Otherwise, an error number will be returned to indicate the error.

This function shall not return an error code of EINTR.

## ERRORS

The **pthread\_rwlock\_timedwrlock**() function shall fail if:

- \[ETIMEDOUT\]

  The lock could not be acquired before the specified timeout expired.

The **pthread\_rwlock\_timedwrlock**() function may fail if:

- \[EDEADLK\]

  The calling thread already holds *rwlock*.

- \[EINVAL\]

  The value specified by *rwlock* does not refer to an initialized read-write lock object, or the *abs\_timeout* nanosecond value is less than zero or greater than or equal to 1 billion.

## SEE ALSO

[pthread\_rwlock\_init(3)](/pthread_rwlock_init/3.md), [pthread\_rwlock\_timedrdlock(3)](/pthread_rwlock_timedrdlock/3.md), [pthread\_rwlock\_unlock(3)](/pthread_rwlock_unlock/3.md)

## STANDARDS

The **pthread\_rwlock\_timedwrlock**() function is expected to conform to ISO/IEC 9945-1:1996 (“POSIX.1”).

## HISTORY

The **pthread\_rwlock\_timedwrlock**() function first appeared in FreeBSD 5.2.
