待解决疑问
如果调用 Wait 之前不加锁的话,就有可能 Unlock 一个未加锁的 Locker。如果read的穿透次数一直达不到dirty map的长度, 那么一直不会讲dirty的数据更新到read中,(如果不释放锁,其他 Wait 的调用者就没有机会加入到 notify 队列中 了),然后一直等待;cond.Wait 方法的实现是,把当前调用者加入到 notify 队列之中后会释放锁。既然队列中有一个UnLock解锁动作, 那么自己代码中的Unlock动作还有必要写吗?多线程并发读取的k1一直是旧的数据?
原创
2023-11-16 11:48:25 ·
28 阅读 ·
1 评论