Package org.agrona.concurrent
Class YieldingIdleStrategy
java.lang.Object
org.agrona.concurrent.YieldingIdleStrategy
- All Implemented Interfaces:
IdleStrategy
IdleStrategy that will call Thread.yield() when the work count is zero.-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final StringName to be returned fromalias().static final YieldingIdleStrategyAs there is no instance state then this object can be used to save on allocation. -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionalias()Simple name by which the strategy can be identified.voididle()Perform current idle action (e.g.voididle(int workCount) Perform current idle action (e.g.voidreset()Reset the internal state in preparation for entering an idle state again.toString()
-
Field Details
-
ALIAS
Name to be returned fromalias().- See Also:
-
INSTANCE
As there is no instance state then this object can be used to save on allocation.
-
-
Constructor Details
-
YieldingIdleStrategy
public YieldingIdleStrategy()Create a new instance.
-
-
Method Details
-
idle
public void idle(int workCount) Perform current idle action (e.g. nothing/yield/sleep). This method signature expects users to call into it on every work 'cycle'. The implementations may use the indication "workCount > 0" to reset internal backoff state. This method works well with 'work' APIs which follow the following rules:- 'work' returns a value larger than 0 when some work has been done
- 'work' returns 0 when no work has been done
- 'work' may return error codes which are less than 0, but which amount to no work has been done
Callers are expected to follow this pattern:
while (isRunning) { idleStrategy.idle(doWork()); }- Specified by:
idlein interfaceIdleStrategy- Parameters:
workCount- performed in last duty cycle.
-
idle
public void idle()Perform current idle action (e.g. nothing/yield/sleep). To be used in conjunction withIdleStrategy.reset()to clear internal state when idle period is over (or before it begins). Callers are expected to follow this pattern:while (isRunning) { if (!hasWork()) { idleStrategy.reset(); while (!hasWork()) { if (!isRunning) { return; } idleStrategy.idle(); } } doWork(); }- Specified by:
idlein interfaceIdleStrategy
-
reset
public void reset()Reset the internal state in preparation for entering an idle state again.- Specified by:
resetin interfaceIdleStrategy
-
alias
Simple name by which the strategy can be identified.- Specified by:
aliasin interfaceIdleStrategy- Returns:
- simple name by which the strategy can be identified.
-
toString
-