开发者社区 问答 正文

源码问题,关于MemoryEventStoreWithBuffer#checkFreeSlotAt实

MemoryEventStoreWithBuffer的put操作会调用checkFreeSlotAt检查是否有空位。源码如下:

`private boolean checkFreeSlotAt(final long sequence) {

final long wrapPoint = sequence - bufferSize;
final long minPoint = getMinimumGetOrAck();
if (wrapPoint > minPoint) { // 刚好追上一轮
    return false;
} else {
   //...
}

}`

我想知道,为什么调用getMinimumGetOrAck()方法来获得getSequence或ackSequence的较小值,ackSequence不应该总是小于等于getSequence吗?直接与ackSequence比较不就可以了?

原提问者GitHub用户tianshouzhi

展开
收起
Java工程师 2023-05-08 19:09:23 94 分享 版权
1 条回答
写回答
取消 提交回答
  • 是的,ack < get < put,基本满足这个关系

    原回答者GitHub用户agapple

    2023-05-09 19:06:11
    赞同 展开评论
问答地址: