请向我解释更多合同。我无法弄清楚ReentrantReadWriteLock
中包含的两个锁是否有某种关联?或者这些只是一组两个正常的锁?
答案 0 :(得分:6)
它允许多个线程同时读取资源,但需要一个线程等待独占锁才能写入资源。
规则是:
在内部,锁定状态(c)由int值维护。在这种情况下,由于我们有读写锁,因此它在逻辑上分为两个短路:较低的一个表示独占(写入)锁定保持计数,而较高的一个表示共享(读取器)保持计数。
假设当前的锁定状态是 c = xxxx xxxx xxxx xxxx yyyy yyyy yyyy yyyy then 读卡器锁的数量是高位xxxx xxxx xxxx xxxx
作家锁的数量是低位yyyy yyyy yyyy yyyy
答案 1 :(得分:2)
如果线程正在等待Read Lock它是共享的,但是当线程想要获取写锁时,只允许该线程获得与互斥相同的访问权。
因此允许任何一项操作。if lock is held by readers and thread request write lock no more readers are allowed to acquire read lock until thread which has acquired write lock release it
。