@Override
   protected final long readAcquire() {
      final long consumerIndex = lpConsumerIndex();
      final long offset = offsetForIndex(consumerIndex);
      // If we can't see the next available element we can't poll
      if (isReadReleased(offset)) { // LoadLoad
            /*
             * NOTE: Queue may not actually be empty in the case of a producer (P1) being interrupted after
             * winning the CAS on offer but before storing the element in the queue. Other producers may go on
             * to fill up the queue after this element.
             */
         if (consumerIndex != lvProducerIndex()) {
            while (isReadReleased(offset)) {
               //NOP
            }
         }
         else {
            return EOF;
         }
      }
      return offset;
   }
This is to be used for an IPC queue with the direct buffer used being a memory mapped file.

@param buff
@param capacity
jctools-channels/src/main/java/org/jctools/channels/mpsc/MpscFFLamportOffHeapFixedSizeRingBuffer.java