2

如果我有一个线程首先操作数据结构并因此在其上有一个 pthread 写锁,我是否可以让该线程将锁更改为读锁状态而不会出现可能允许另一个线程在某个时间点获取写锁的竞争条件开关?

4

1 回答 1

1

不幸的是,据我所知,pthreads 标准不允许在pthread_rwlock_t. 一些 pthreads 实现可能允许扩展,让您在不释放锁的情况下从持有写入器锁转换为持有读取器锁,但这超出了 pthreads 的 SuS / POSIX 规范的范围。而且我不相信最常见的情况,Linux/glibc pthreads 实现允许这种操作。

所以你的问题的简短回答是“不”。您需要在 pthread_mutex_t/pthread_cond_t 之上实现自己的读取器/写入器锁才能获得所需的行为。

于 2012-06-10T20:55:28.803 回答