Package com.lmax.disruptor
Class YieldingWaitStrategy
java.lang.Object
com.lmax.disruptor.YieldingWaitStrategy
- All Implemented Interfaces:
WaitStrategy
Yielding strategy that uses a Thread.yield() for
EventProcessors waiting on a barrier
after an initially spinning.
This strategy will use 100% CPU, but will more readily give up the CPU than a busy spin strategy if other threads require CPU resource.
-
Field Summary
Fields -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprivate intapplyWaitMethod(SequenceBarrier barrier, int counter) voidImplementations should signal the waitingEventProcessors that the cursor has advanced.longwaitFor(long sequence, Sequence cursor, Sequence dependentSequence, SequenceBarrier barrier) Wait for the given sequence to be available.
-
Field Details
-
SPIN_TRIES
private static final int SPIN_TRIES- See Also:
-
-
Constructor Details
-
YieldingWaitStrategy
public YieldingWaitStrategy()
-
-
Method Details
-
waitFor
public long waitFor(long sequence, Sequence cursor, Sequence dependentSequence, SequenceBarrier barrier) throws AlertException, InterruptedException Description copied from interface:WaitStrategyWait for the given sequence to be available. It is possible for this method to return a value less than the sequence number supplied depending on the implementation of the WaitStrategy. A common use for this is to signal a timeout. Any EventProcessor that is using a WaitStrategy to get notifications about message becoming available should remember to handle this case. TheBatchEventProcessorexplicitly handles this case and will signal a timeout if required.- Specified by:
waitForin interfaceWaitStrategy- Parameters:
sequence- to be waited on.cursor- the main sequence from ringbuffer. Wait/notify strategies will need this as it's the only sequence that is also notified upon update.dependentSequence- on which to wait.barrier- the processor is waiting on.- Returns:
- the sequence that is available which may be greater than the requested sequence.
- Throws:
AlertException- if the status of the Disruptor has changed.InterruptedException- if the thread is interrupted.
-
signalAllWhenBlocking
public void signalAllWhenBlocking()Description copied from interface:WaitStrategyImplementations should signal the waitingEventProcessors that the cursor has advanced.- Specified by:
signalAllWhenBlockingin interfaceWaitStrategy
-
applyWaitMethod
- Throws:
AlertException
-