关于公平锁, 判断是否阻塞
来源:5-14 看似读锁按部就班

woy
2020-02-15
老师, 我不太理解, 公平锁中判断 是否需要阻塞的方式
final boolean writerShouldBlock() {
return hasQueuedPredecessors();
}
final boolean readerShouldBlock() {
return hasQueuedPredecessors();
}
为什么根据队列中是否有等待的线程来判断当前线程是否阻塞呢?
比如线程a获取写锁正在执行, 线程b请求写锁, 但这时wait queue中是空的啊, 这不就导致线程b不进行阻塞了么.
写回答
1回答
-
是的,不进行阻塞,会去尝试抢锁,抢不到再做后面的步骤,再阻塞。
10
相似问题