Similar to #336 issue we have the producer trying to wakeup the consumer after a fill here:
private void wakeupConsumer()
{
Thread consumerThread;
do
{
consumerThread = lvBlocked();
} while (consumerThread == null);
LockSupport.unpark(consumerThread);
}
The consumer can wake up from a timeout independently during the time period between the 'fill' moving the producerIndex and the wakeup call. The producer thread then spins as it cannot find a blocked consumer.
Similar to #336 issue we have the producer trying to wakeup the consumer after a
fillhere:JCTools/jctools-core/src/main/java/org/jctools/queues/MpscBlockingConsumerArrayQueue.java
Line 462 in 3539dfa
The consumer can wake up from a timeout independently during the time period between the 'fill' moving the
producerIndexand the wakeup call. The producer thread then spins as it cannot find a blocked consumer.