#### 36.2.3 Functions for Waiting According to a Specific Clock ¶

The GNU C Library provides several waiting functions that expect an explicit `clockid_t` argument. These functions were all adopted by POSIX.1-2024.

Function: `int` pthread_cond_clockwait `(pthread_cond_t *cond, pthread_mutex_t *mutex, clockid_t clockid, const struct timespec *abstime)` ¶

  Preliminary: | MT-Safe | AS-Unsafe lock | AC-Unsafe lock | See POSIX Safety Concepts.

  Behaves like `pthread_cond_timedwait` except the time abstime is measured against the clock specified by clockid rather than the clock specified or defaulted when `pthread_cond_init` was called. Currently, clockid must be either `CLOCK_MONOTONIC` or `CLOCK_REALTIME`.

Function: `int` pthread_rwlock_clockrdlock `(pthread_rwlock_t *rwlock, clockid_t clockid, const struct timespec *abstime)` ¶

  Preliminary: | MT-Safe | AS-Unsafe lock | AC-Unsafe lock | See POSIX Safety Concepts.

  Behaves like `pthread_rwlock_timedrdlock` except the time abstime is measured against the clock specified by clockid rather than `CLOCK_REALTIME`. Currently, clockid must be either `CLOCK_MONOTONIC` or `CLOCK_REALTIME`, otherwise `EINVAL` is returned.

Function: `int` pthread_rwlock_clockwrlock `(pthread_rwlock_t *rwlock, clockid_t clockid, const struct timespec *abstime)` ¶

  Preliminary: | MT-Safe | AS-Unsafe lock | AC-Unsafe lock | See POSIX Safety Concepts.

  Behaves like `pthread_rwlock_timedwrlock` except the time abstime is measured against the clock specified by clockid rather than `CLOCK_REALTIME`. Currently, clockid must be either `CLOCK_MONOTONIC` or `CLOCK_REALTIME`, otherwise `EINVAL` is returned.