面试题答案
一键面试实现思路
- 读锁特性:允许多个线程同时获取读锁进行读操作,因为读操作不会改变共享数据,所以不会产生数据不一致问题。
- 写锁特性:只允许一个线程获取写锁进行写操作,写操作期间其他线程无论是读还是写都不能进行,以此保证数据一致性。
- 读写锁的使用场景:在读操作频繁,写操作较少的情况下,使用读写锁能大大提高并发性能。
伪代码示例
假设存在一个共享变量 sharedData
,以及对应的读写锁 rwLock
。
// 读操作
readOperation() {
rwLock.readLock.acquire() // 获取读锁
// 执行读操作,读取 sharedData
data = sharedData
rwLock.readLock.release() // 释放读锁
return data
}
// 写操作
writeOperation(newData) {
rwLock.writeLock.acquire() // 获取写锁
// 执行写操作,更新 sharedData
sharedData = newData
rwLock.writeLock.release() // 释放写锁
}