Open dajitui opened 1 year ago
在红色框中,很有可能 线程A获得锁执行了一次write()函数,随后释放锁; 然后线程C紧接着获得了锁,也执行了一次write()函数,此时 getLastIndex()==2,然后线程A获得锁执行的 deleteOnStartIndex()函数,是从2开始的,因此会出现1位置的日志没有被删除;
在红色框中,很有可能 线程A获得锁执行了一次write()函数,随后释放锁; 然后线程C紧接着获得了锁,也执行了一次write()函数,此时 getLastIndex()==2,然后线程A获得锁执行的 deleteOnStartIndex()函数,是从2开始的,因此会出现1位置的日志没有被删除;
getLastIndex跟写操作没有同步
是没有同步;所以,你是想怎么改???
是没有同步;所以,你是想怎么改???
这个问题简单,可以百度一下或者问下chaigpt
怎么感觉你在自问自答啊? 你明知道那样操作 会出现问题,还把问题抛出来,是想起到一个错误示范作用吗?
我来给你普及一下,github 的issue 是为了开发者提出问题、缺陷。并不是我给了一个错误的示范,而是框架就不严谨,就是java并发没有做好。 我开着三轮车,不说三轮车不行,说开的人有问题,哈哈
那我就不懂了;那你既然说 解决方法简单,那你大致说一下你的解决思路?
在高并发下,对RocksDB 处理出现数据不一致问题