我对这个线程问题一窍不通:\
我想象 Write Lock 的行为类似于等待全局变量确认的 while
。喜欢:
/* pthread_rwlock_wrlock */
while (is_blocked) {
/* waiting */
}
is_blocked = true;
(writing code...)
/* pthread_rwlock_unlock */
is_blocked = false;
这样对吗? Read Lock 是如何工作的?如果共享,为什么要使用?
信息:
pthread_rwlock_rdlock() – 获取共享读锁
pthread_rwlock_wrlock() – 获得独占写锁
最佳答案
读锁的目的是阻止写入。
- 如果没有写入锁,读取器可以获得锁定。
- 如果根本没有锁,作者可以获得锁。
两者都没有简单的实现,一个
你为
建议的例子有一个竞争条件,
有时会失败。
关于C 多线程 : What is the advantage of a Read Lock (pthread_rwlock_rdlock) if all threads can access it simultaneously?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42252035/