Package org.jctools.queues
Interface QueueProgressIndicators
-
- All Known Implementing Classes:
BaseMpscLinkedArrayQueue,BaseMpscLinkedAtomicArrayQueue,BaseMpscLinkedAtomicUnpaddedArrayQueue,BaseMpscLinkedUnpaddedArrayQueue,BaseMpscLinkedVarHandleArrayQueue,BaseMpscLinkedVarHandleUnpaddedArrayQueue,BaseSpscLinkedArrayQueue,BaseSpscLinkedAtomicArrayQueue,BaseSpscLinkedAtomicUnpaddedArrayQueue,BaseSpscLinkedUnpaddedArrayQueue,BaseSpscLinkedVarHandleArrayQueue,BaseSpscLinkedVarHandleUnpaddedArrayQueue,ConcurrentCircularArrayQueue,ConcurrentCircularAtomicArrayQueue,ConcurrentCircularAtomicUnpaddedArrayQueue,ConcurrentCircularUnpaddedArrayQueue,ConcurrentCircularVarHandleArrayQueue,ConcurrentCircularVarHandleUnpaddedArrayQueue,ConcurrentSequencedCircularArrayQueue,ConcurrentSequencedCircularAtomicArrayQueue,ConcurrentSequencedCircularAtomicUnpaddedArrayQueue,ConcurrentSequencedCircularUnpaddedArrayQueue,ConcurrentSequencedCircularVarHandleArrayQueue,ConcurrentSequencedCircularVarHandleUnpaddedArrayQueue,FFBuffer,FFBufferConsumerField,FFBufferL1Pad,FFBufferL2Pad,FFBufferL3Pad,FFBufferProducerField,MpmcArrayQueue,MpmcArrayQueueConsumerIndexField,MpmcArrayQueueL1Pad,MpmcArrayQueueL2Pad,MpmcArrayQueueL3Pad,MpmcArrayQueueProducerIndexField,MpmcAtomicArrayQueue,MpmcAtomicArrayQueueConsumerIndexField,MpmcAtomicArrayQueueL1Pad,MpmcAtomicArrayQueueL2Pad,MpmcAtomicArrayQueueL3Pad,MpmcAtomicArrayQueueProducerIndexField,MpmcAtomicUnpaddedArrayQueue,MpmcAtomicUnpaddedArrayQueueConsumerIndexField,MpmcAtomicUnpaddedArrayQueueL1Pad,MpmcAtomicUnpaddedArrayQueueL2Pad,MpmcAtomicUnpaddedArrayQueueL3Pad,MpmcAtomicUnpaddedArrayQueueProducerIndexField,MpmcUnboundedXaddArrayQueue,MpmcUnpaddedArrayQueue,MpmcUnpaddedArrayQueueConsumerIndexField,MpmcUnpaddedArrayQueueL1Pad,MpmcUnpaddedArrayQueueL2Pad,MpmcUnpaddedArrayQueueL3Pad,MpmcUnpaddedArrayQueueProducerIndexField,MpmcVarHandleArrayQueue,MpmcVarHandleArrayQueueConsumerIndexField,MpmcVarHandleArrayQueueL1Pad,MpmcVarHandleArrayQueueL2Pad,MpmcVarHandleArrayQueueL3Pad,MpmcVarHandleArrayQueueProducerIndexField,MpmcVarHandleUnpaddedArrayQueue,MpmcVarHandleUnpaddedArrayQueueConsumerIndexField,MpmcVarHandleUnpaddedArrayQueueL1Pad,MpmcVarHandleUnpaddedArrayQueueL2Pad,MpmcVarHandleUnpaddedArrayQueueL3Pad,MpmcVarHandleUnpaddedArrayQueueProducerIndexField,MpscArrayQueue,MpscArrayQueueConsumerIndexField,MpscArrayQueueL1Pad,MpscArrayQueueL2Pad,MpscArrayQueueL3Pad,MpscArrayQueueMidPad,MpscArrayQueueProducerIndexField,MpscArrayQueueProducerLimitField,MpscAtomicArrayQueue,MpscAtomicArrayQueueConsumerIndexField,MpscAtomicArrayQueueL1Pad,MpscAtomicArrayQueueL2Pad,MpscAtomicArrayQueueL3Pad,MpscAtomicArrayQueueMidPad,MpscAtomicArrayQueueProducerIndexField,MpscAtomicArrayQueueProducerLimitField,MpscAtomicUnpaddedArrayQueue,MpscAtomicUnpaddedArrayQueueConsumerIndexField,MpscAtomicUnpaddedArrayQueueL1Pad,MpscAtomicUnpaddedArrayQueueL2Pad,MpscAtomicUnpaddedArrayQueueL3Pad,MpscAtomicUnpaddedArrayQueueMidPad,MpscAtomicUnpaddedArrayQueueProducerIndexField,MpscAtomicUnpaddedArrayQueueProducerLimitField,MpscBlockingConsumerArrayQueue,MpscBlockingConsumerVarHandleArrayQueue,MpscBlockingConsumerVarHandleUnpaddedArrayQueue,MpscChunkedArrayQueue,MpscChunkedArrayQueueColdProducerFields,MpscChunkedAtomicArrayQueue,MpscChunkedAtomicArrayQueueColdProducerFields,MpscChunkedAtomicUnpaddedArrayQueue,MpscChunkedAtomicUnpaddedArrayQueueColdProducerFields,MpscChunkedUnpaddedArrayQueue,MpscChunkedUnpaddedArrayQueueColdProducerFields,MpscChunkedVarHandleArrayQueue,MpscChunkedVarHandleArrayQueueColdProducerFields,MpscChunkedVarHandleUnpaddedArrayQueue,MpscChunkedVarHandleUnpaddedArrayQueueColdProducerFields,MpscGrowableArrayQueue,MpscGrowableAtomicArrayQueue,MpscGrowableAtomicUnpaddedArrayQueue,MpscGrowableUnpaddedArrayQueue,MpscGrowableVarHandleArrayQueue,MpscGrowableVarHandleUnpaddedArrayQueue,MpscSequencedArrayQueue,MpscSequencedArrayQueueConsumerField,MpscSequencedArrayQueueL1Pad,MpscSequencedArrayQueueL2Pad,MpscSequencedArrayQueueProducerField,MpscUnboundedArrayQueue,MpscUnboundedAtomicArrayQueue,MpscUnboundedAtomicUnpaddedArrayQueue,MpscUnboundedUnpaddedArrayQueue,MpscUnboundedVarHandleArrayQueue,MpscUnboundedVarHandleUnpaddedArrayQueue,MpscUnboundedXaddArrayQueue,MpscUnpaddedArrayQueue,MpscUnpaddedArrayQueueConsumerIndexField,MpscUnpaddedArrayQueueL1Pad,MpscUnpaddedArrayQueueL2Pad,MpscUnpaddedArrayQueueL3Pad,MpscUnpaddedArrayQueueMidPad,MpscUnpaddedArrayQueueProducerIndexField,MpscUnpaddedArrayQueueProducerLimitField,MpscVarHandleArrayQueue,MpscVarHandleArrayQueueConsumerIndexField,MpscVarHandleArrayQueueL1Pad,MpscVarHandleArrayQueueL2Pad,MpscVarHandleArrayQueueL3Pad,MpscVarHandleArrayQueueMidPad,MpscVarHandleArrayQueueProducerIndexField,MpscVarHandleArrayQueueProducerLimitField,MpscVarHandleUnpaddedArrayQueue,MpscVarHandleUnpaddedArrayQueueConsumerIndexField,MpscVarHandleUnpaddedArrayQueueL1Pad,MpscVarHandleUnpaddedArrayQueueL2Pad,MpscVarHandleUnpaddedArrayQueueL3Pad,MpscVarHandleUnpaddedArrayQueueMidPad,MpscVarHandleUnpaddedArrayQueueProducerIndexField,MpscVarHandleUnpaddedArrayQueueProducerLimitField,MpUnboundedXaddArrayQueue,SpmcArrayQueue,SpmcArrayQueueConsumerIndexField,SpmcArrayQueueL1Pad,SpmcArrayQueueL2Pad,SpmcArrayQueueL3Pad,SpmcArrayQueueMidPad,SpmcArrayQueueProducerIndexCacheField,SpmcArrayQueueProducerIndexField,SpmcAtomicArrayQueue,SpmcAtomicArrayQueueConsumerIndexField,SpmcAtomicArrayQueueL1Pad,SpmcAtomicArrayQueueL2Pad,SpmcAtomicArrayQueueL3Pad,SpmcAtomicArrayQueueMidPad,SpmcAtomicArrayQueueProducerIndexCacheField,SpmcAtomicArrayQueueProducerIndexField,SpmcAtomicUnpaddedArrayQueue,SpmcAtomicUnpaddedArrayQueueConsumerIndexField,SpmcAtomicUnpaddedArrayQueueL1Pad,SpmcAtomicUnpaddedArrayQueueL2Pad,SpmcAtomicUnpaddedArrayQueueL3Pad,SpmcAtomicUnpaddedArrayQueueMidPad,SpmcAtomicUnpaddedArrayQueueProducerIndexCacheField,SpmcAtomicUnpaddedArrayQueueProducerIndexField,SpmcUnpaddedArrayQueue,SpmcUnpaddedArrayQueueConsumerIndexField,SpmcUnpaddedArrayQueueL1Pad,SpmcUnpaddedArrayQueueL2Pad,SpmcUnpaddedArrayQueueL3Pad,SpmcUnpaddedArrayQueueMidPad,SpmcUnpaddedArrayQueueProducerIndexCacheField,SpmcUnpaddedArrayQueueProducerIndexField,SpmcVarHandleArrayQueue,SpmcVarHandleArrayQueueConsumerIndexField,SpmcVarHandleArrayQueueL1Pad,SpmcVarHandleArrayQueueL2Pad,SpmcVarHandleArrayQueueL3Pad,SpmcVarHandleArrayQueueMidPad,SpmcVarHandleArrayQueueProducerIndexCacheField,SpmcVarHandleArrayQueueProducerIndexField,SpmcVarHandleUnpaddedArrayQueue,SpmcVarHandleUnpaddedArrayQueueConsumerIndexField,SpmcVarHandleUnpaddedArrayQueueL1Pad,SpmcVarHandleUnpaddedArrayQueueL2Pad,SpmcVarHandleUnpaddedArrayQueueL3Pad,SpmcVarHandleUnpaddedArrayQueueMidPad,SpmcVarHandleUnpaddedArrayQueueProducerIndexCacheField,SpmcVarHandleUnpaddedArrayQueueProducerIndexField,SpscArrayQueue,SpscArrayQueueColdField,SpscArrayQueueConsumerIndexField,SpscArrayQueueL1Pad,SpscArrayQueueL2Pad,SpscArrayQueueL3Pad,SpscArrayQueueProducerIndexFields,SpscAtomicArrayQueue,SpscAtomicArrayQueueColdField,SpscAtomicArrayQueueConsumerIndexField,SpscAtomicArrayQueueL1Pad,SpscAtomicArrayQueueL2Pad,SpscAtomicArrayQueueL3Pad,SpscAtomicArrayQueueProducerIndexFields,SpscAtomicUnpaddedArrayQueue,SpscAtomicUnpaddedArrayQueueColdField,SpscAtomicUnpaddedArrayQueueConsumerIndexField,SpscAtomicUnpaddedArrayQueueL1Pad,SpscAtomicUnpaddedArrayQueueL2Pad,SpscAtomicUnpaddedArrayQueueL3Pad,SpscAtomicUnpaddedArrayQueueProducerIndexFields,SpscChunkedArrayQueue,SpscChunkedAtomicArrayQueue,SpscChunkedAtomicUnpaddedArrayQueue,SpscChunkedUnpaddedArrayQueue,SpscChunkedVarHandleArrayQueue,SpscChunkedVarHandleUnpaddedArrayQueue,SpscGrowableArrayQueue,SpscGrowableAtomicArrayQueue,SpscGrowableAtomicUnpaddedArrayQueue,SpscGrowableUnpaddedArrayQueue,SpscGrowableVarHandleArrayQueue,SpscGrowableVarHandleUnpaddedArrayQueue,SpscUnboundedArrayQueue,SpscUnboundedAtomicArrayQueue,SpscUnboundedAtomicUnpaddedArrayQueue,SpscUnboundedUnpaddedArrayQueue,SpscUnboundedVarHandleArrayQueue,SpscUnboundedVarHandleUnpaddedArrayQueue,SpscUnpaddedArrayQueue,SpscUnpaddedArrayQueueColdField,SpscUnpaddedArrayQueueConsumerIndexField,SpscUnpaddedArrayQueueL1Pad,SpscUnpaddedArrayQueueL2Pad,SpscUnpaddedArrayQueueL3Pad,SpscUnpaddedArrayQueueProducerIndexFields,SpscVarHandleArrayQueue,SpscVarHandleArrayQueueColdField,SpscVarHandleArrayQueueConsumerIndexField,SpscVarHandleArrayQueueL1Pad,SpscVarHandleArrayQueueL2Pad,SpscVarHandleArrayQueueL3Pad,SpscVarHandleArrayQueueProducerIndexFields,SpscVarHandleUnpaddedArrayQueue,SpscVarHandleUnpaddedArrayQueueColdField,SpscVarHandleUnpaddedArrayQueueConsumerIndexField,SpscVarHandleUnpaddedArrayQueueL1Pad,SpscVarHandleUnpaddedArrayQueueL2Pad,SpscVarHandleUnpaddedArrayQueueL3Pad,SpscVarHandleUnpaddedArrayQueueProducerIndexFields
public interface QueueProgressIndicatorsThis interface is provided for monitoring purposes only and is only available on queues where it is easy to provide it. The producer/consumer progress indicators usually correspond with the number of elements offered/polled, but they are not guaranteed to maintain that semantic.
-
-
Method Summary
All Methods Instance Methods Abstract Methods Modifier and Type Method Description longcurrentConsumerIndex()This method has no concurrent visibility semantics.longcurrentProducerIndex()This method has no concurrent visibility semantics.
-
-
-
Method Detail
-
currentProducerIndex
long currentProducerIndex()
This method has no concurrent visibility semantics. The value returned may be negative. Under normal circumstances 2 consecutive calls to this method can offer an idea of progress made by producer threads by subtracting the 2 results though in extreme cases (if producers have progressed by more than 2^64) this may also fail.
This value will normally indicate number of elements passed into the queue, but may under some circumstances be a derivative of that figure. This method should not be used to derive size or emptiness.- Returns:
- the current value of the producer progress index
-
currentConsumerIndex
long currentConsumerIndex()
This method has no concurrent visibility semantics. The value returned may be negative. Under normal circumstances 2 consecutive calls to this method can offer an idea of progress made by consumer threads by subtracting the 2 results though in extreme cases (if consumers have progressed by more than 2^64) this may also fail.
This value will normally indicate number of elements taken out of the queue, but may under some circumstances be a derivative of that figure. This method should not be used to derive size or emptiness.- Returns:
- the current value of the consumer progress index
-
-