我在Linux上使用读/写锁,我发现尝试将读锁定对象升级为写锁死锁.
即
// acquire the read lock in thread 1.
pthread_rwlock_rdlock( &lock );
// make a decision to upgrade the lock in threads 1.
pthread_rwlock_wrlock( &lock ); // this deadlocks as already hold read lock.
Run Code Online (Sandbox Code Playgroud)
我已经阅读了手册页,它非常具体.
如果在进行调用时调用线程可能会死锁,它会保持读写锁定(无论是读还是写锁).
在这些情况下,将读锁升级到写锁的最佳方法是什么.我不想在我保护的变量上引入竞争.
据推测,我可以创建另一个互斥锁来包含释放读锁定和获取写锁定但是我并没有真正看到使用读/写锁定.我不妨简单地使用普通的互斥锁.
谢谢