in gflog-core/src/main/java/com/epam/deltix/gflog/core/idle/BackoffIdleStrategy.java [79:110]
private void idle() {
switch (state) {
case WORKING:
value = 0;
state = SPINNING;
// fallthrough
case SPINNING:
if (++value <= maxSpins) {
Util.onSpinWait();
break;
}
value = 0;
state = YIELDING;
// fallthrough
case YIELDING:
if (++value <= maxYields) {
Thread.yield();
break;
}
value = minParkPeriodNs;
state = PARKING;
// fallthrough
case PARKING:
LockSupport.parkNanos(value);
value = Math.min(value << 1, maxParkPeriodNs);
}
}