不幸的是,据我所知,pthreads 标准不允许在pthread_rwlock_t
. 一些 pthreads 实现可能允许扩展,让您在不释放锁的情况下从持有写入器锁转换为持有读取器锁,但这超出了 pthreads 的 SuS / POSIX 规范的范围。而且我不相信最常见的情况,Linux/glibc pthreads 实现允许这种操作。
所以你的问题的简短回答是“不”。您需要在 pthread_mutex_t/pthread_cond_t 之上实现自己的读取器/写入器锁才能获得所需的行为。