public final class SleepingWaitStrategy extends Object implements WaitStrategy
LockSupport.parkNanos(n)
) for the minimum
number of nanos the OS and JVM will allow while the
EventProcessor
s are waiting on a barrier.
This strategy is a good compromise between performance and CPU resource. Latency spikes can occur after quiet periods. It will also reduce the impact on the producing thread as it will not need signal any conditional variables to wake up the event handling thread.
Constructor and Description |
---|
SleepingWaitStrategy() |
SleepingWaitStrategy(int retries) |
SleepingWaitStrategy(int retries,
long sleepTimeNs) |
Modifier and Type | Method and Description |
---|---|
void |
signalAllWhenBlocking()
Implementations should signal the waiting
EventProcessor s that the cursor has advanced. |
long |
waitFor(long sequence,
Sequence cursor,
Sequence dependentSequence,
SequenceBarrier barrier)
Wait for the given sequence to be available.
|
public SleepingWaitStrategy()
public SleepingWaitStrategy(int retries)
public SleepingWaitStrategy(int retries, long sleepTimeNs)
public long waitFor(long sequence, Sequence cursor, Sequence dependentSequence, SequenceBarrier barrier) throws AlertException
WaitStrategy
BatchEventProcessor
explicitly
handles this case and will signal a timeout if required.waitFor
in interface WaitStrategy
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.AlertException
- if the status of the Disruptor has changed.public void signalAllWhenBlocking()
WaitStrategy
EventProcessor
s that the cursor has advanced.signalAllWhenBlocking
in interface WaitStrategy
Copyright © 2024. All rights reserved.