For the complete documentation index, see llms.txt. This page is also available as Markdown.

pthread_rwlock_timedwrlock(3)

pthread_rwlock_timedwrlock — 获取读写锁用于写入或在指定时间后放弃

名称

pthread_rwlock_timedwrlock

libpthread

概要

#include <pthread.h>

int
pthread_rwlock_timedwrlock(pthread_rwlock_t *restrict rwlock,
    const struct timespec *restrict abs_timeout)

描述

该函数获取读写锁 rwlock 上的写锁。然而,如果在不等待其他线程解锁的情况下无法获取锁,则当 abs_timeout 到期时将终止此等待。

如果线程被信号中断,pthread_rwlock_timedwrlock 函数将在该线程从信号处理函数返回后自动重启。

如果调用时线程已持有 rwlock,调用线程可能死锁。如果使用未初始化的读写锁调用此函数,结果未定义。

实现说明

为防止写者饥饿,写者优先于读者。

返回值

如果成功,pthread_rwlock_timedwrlock 函数将返回零。否则将返回一个错误号以指示错误。

此函数不会返回 EINTR 错误码。

错误

pthread_rwlock_timedwrlock 函数将在以下情况失败:

[ETIMEDOUT] 在指定的超时时间到期之前无法获取锁。

pthread_rwlock_timedwrlock 函数可能在以下情况失败:

[EDEADLK] 调用线程已持有 rwlock

[EINVAL]rwlock 指定的值未指向已初始化的读写锁对象,或 abs_timeout 的纳秒值小于零或大于等于十亿。

参见

pthread_rwlock_init(3), pthread_rwlock_timedrdlock(3), pthread_rwlock_unlock(3)

标准

pthread_rwlock_timedwrlock 函数预期符合 ISO/IEC 9945-1:1996 ("POSIX.1") 规范。

历史

pthread_rwlock_timedwrlock 函数首次出现于 FreeBSD 5.2。

最后更新于

这有帮助吗?