为了确保写锁不会永远被阻塞,在获取读锁的时候如果当前写锁已经被阻塞,那么这次获取读锁也会被阻塞。
以下使用场景
线程1:
lockForRead(); lockForRead(); unlock(); unlock();
线程2:
lockForWrite(); unlock();
会概率性死锁
为了确保写锁不会永远被阻塞,在获取读锁的时候如果当前写锁已经被阻塞,那么这次获取读锁也会被阻塞。
以下使用场景
线程1:
lockForRead(); lockForRead(); unlock(); unlock();
线程2:
lockForWrite(); unlock();
会概率性死锁