Class IndexedQueueSizeUtil


  • public final class IndexedQueueSizeUtil
    extends java.lang.Object
    A note to maintainers on index assumptions: in a single threaded world it would seem intuitive to assume:
     producerIndex >= consumerIndex
     
    As an invariant, but in a concurrent, long running settings all of the following need to be considered:
    • consumerIndex > producerIndex : due to counter overflow (unlikey with longs, but easy to reason)
    • consumerIndex > producerIndex : due to consumer FastFlow like implementation discovering the element before the counter is updated.
    • producerIndex - consumerIndex < 0 : due to above.
    • producerIndex - consumerIndex > Integer.MAX_VALUE : as linked buffers allow constructing queues with more than Integer.MAX_VALUE elements.