pthread_rwlock_init(3)

pthread_rwlock_init3

Initialize a read/write lock

Usage

#include <pthread.h>

int

pthread_rwlock_init(pthread_rwlock_t *restrict lock, const pthread_rwlockattr_t *restrict attr);

Library

POSIX Threads Library (libpthread, -lpthread)

Overview

The pthread_rwlock_init() function is used to initialize a read/write lock, with attributes specified by attr. If attr is NULL, the default read/write lock attributes are used.

The results of calling pthread_rwlock_init() with an already initialized lock are undefined.

Return values

If successful, the pthread_rwlock_init() function will return zero. Otherwise an error number will be returned to indicate the error.

Errors

The pthread_rwlock_init() function will fail if:

[EAGAIN]

The system lacked the necessary resources (other than memory) to initialize the lock.

[ENOMEM]

Insufficient memory exists to initialize the lock.

[EPERM]

The caller does not have sufficient privilege to perform the operation.

The pthread_rwlock_init() function may fail if:

[EBUSY]

The system has detected an attempt to re-initialize the object referenced by lock, a previously initialized but not yet destroyed read/write lock.

[EINVAL]

The value specified by attr is invalid.

Releases

79 releases since FreeBSD 2.2.8-RELEASE; the text changed 43 times.

  1. 2.2.8
  2. 2.2.9
  3. 3.0–3.2
  4. 3.3–3.4
  5. 3.5–3.5.1
  6. 4.0
  7. 4.1–4.3
  8. 4.4
  9. 4.5–4.11
  10. 5.0–5.2.1
  11. 5.3–5.5
  12. 6.0–6.3
  13. 6.4
  14. 7.0
  15. 7.1
  16. 7.2
  17. 7.3
  18. 7.4
  19. 8.0
  20. 8.1
  21. 8.2
  22. 8.3
  23. 8.4
  24. 9.0
  25. 9.1
  26. 9.2
  27. 9.3
  28. 10.0
  29. 10.1
  30. 10.2
  31. 10.3
  32. 10.4
  33. 11.0
  34. 11.1
  35. 11.2
  36. 11.3
  37. 11.4
  38. 12.0
  39. 12.1
  40. 12.2
  41. 12.3
  42. 12.4
  43. 13.0–13.2
  44. 13.3–16.0

Standards

The pthread_rwlock_init() function is expected to conform to Version 2 of the Single UNIX Specification (“SUSv2”).

History

The pthread_rwlock_init() function first appeared in FreeBSD 3.0.

From base 16.0-CURRENT-20261027-61c70dc16a79 in FreeBSD 16.0-CURRENT (2026-10-27). Parsed by carta from the page's mdoc source.