Additional top-level classes in compilation unit: MpscAtomicArrayQueueL1Pad, MpscAtomicArrayQueueProducerIndexField, MpscAtomicArrayQueueMidPad, MpscAtomicArrayQueueProducerLimitField, MpscAtomicArrayQueueL2Pad, MpscAtomicArrayQueueConsumerIndexField, MpscAtomicArrayQueueL3Pad.
Note
This class was automatically generated by io.netty.util.internal.shaded.org.jctools.queues.atomic.JavaParsingAtomicArrayQueueGenerator
which can found in the jctools-build module. The original source file is MpscArrayQueue.java.
A Multi-Producer-Single-Consumer queue based on a io.
. This
implies that any thread may call the offer method, but only a single thread may call poll/peek for correctness to
maintained.
This implementation follows patterns documented on the package level for False Sharing protection.
This implementation is using the Fast Flow
method for polling from the queue (with minor change to correctly publish the index) and an extension of
the Leslie Lamport concurrent queue algorithm (originated by Martin Thompson) on the producer side.
Access | Constructor and Description |
---|---|
public |
Modifier and Type | Method and Description |
---|---|
public int | drain(final MessagePassingQueue.
Implements io. |
public int | drain(MessagePassingQueue.
Implements io. |
public void | drain(MessagePassingQueue.
Implements io. |
public final int | Returns: 1 if next element cannot be filled, -1 if CAS failed, 0 if successfulnew element, not null e)A wait free alternative to offer which fails on CAS failure. |
public int | fill(MessagePassingQueue.
Implements io. |
public int | fill(MessagePassingQueue.
Implements io. |
public void | fill(MessagePassingQueue.
Implements io. |
public boolean | offer(final E
not e)null , will throw NPE if it isImplements io. Queue#offer(Object) interface.
|
public boolean | Returns: true if the offer is successful, false if queue size exceeds thresholdthe object to offer onto the queue, not null e, int the maximum allowable size threshold) |
public E | peek()
Implements io. Queue#peek() interface.
|
public E | poll()
Implements io. Queue#poll() interface.
|
public boolean | relaxedOffer(E
not e)null , will throw NPE if it isImplements io. |
public E | relaxedPeek()
Implements io. |
public E | relaxedPoll()
Implements io. |
public int |
MpscAtomicArrayQueue | back to summary |
---|---|
public MpscAtomicArrayQueue(final int capacity) |
drain | back to summary |
---|---|
public int drain(final MessagePassingQueue. Implements io. Doc from io. Remove up to limit elements from the queue and hand to consume. This should be semantically similar to:
There's no strong commitment to the queue being empty at the end of a drain. Called from a consumer thread subject to the restrictions appropriate to the implementation. Warning Explicit assumptions are made with regards to
|
drain | back to summary |
---|---|
public int drain(MessagePassingQueue. Implements io. Doc from io. Remove all available item from the queue and hand to consume. This should be semantically similar to: M m; while((m = relaxedPoll()) != null){ c.accept(m); }There's no strong commitment to the queue being empty at the end of a drain. Called from a consumer thread subject to the restrictions appropriate to the implementation. Warning Explicit assumptions are made with regards to
|
drain | back to summary |
---|---|
public void drain(MessagePassingQueue. Implements io. Doc from io. Remove elements from the queue and hand to consume forever. Semantically similar to:
int idleCounter = 0; while (exit.keepRunning()) { E e = relaxedPoll(); if(e==null){ idleCounter = wait.idle(idleCounter); continue; } idleCounter = 0; c.accept(e); } Called from a consumer thread subject to the restrictions appropriate to the implementation. Warning Explicit assumptions are made with regards to
|
failFastOffer | back to summary |
---|---|
public final int failFastOffer(final E e) A wait free alternative to offer which fails on CAS failure.
|
fill | back to summary |
---|---|
public int fill(MessagePassingQueue. Implements io. Doc from io. Stuff the queue with up to limit elements from the supplier. Semantically similar to:
There's no strong commitment to the queue being full at the end of a fill. Called from a producer thread subject to the restrictions appropriate to the implementation Warning Explicit assumptions are made with regards to
|
fill | back to summary |
---|---|
public int fill(MessagePassingQueue. Implements io. Doc from io. Stuff the queue with elements from the supplier. Semantically similar to: while(relaxedOffer(s.get());There's no strong commitment to the queue being full at the end of a fill. Called from a producer thread subject to the restrictions appropriate to the implementation. Unbounded queues will fill up the queue with a fixed amount rather than fill up to oblivion Warning Explicit assumptions are made with regards to
|
fill | back to summary |
---|---|
public void fill(MessagePassingQueue. Implements io. Doc from io. Stuff the queue with elements from the supplier forever. Semantically similar to:
Called from a producer thread subject to the restrictions appropriate to the implementation. The main difference
being that implementors MUST assure room in the queue is available BEFORE calling Warning Explicit assumptions are made with regards to
|
offer | back to summary |
---|---|
public boolean offer(final E e) Implements io. Doc from io. Called from a producer thread subject to the restrictions appropriate to the implementation and
according to the Implementation Notes
|
offerIfBelowThreshold | back to summary |
---|---|
public boolean offerIfBelowThreshold(final E e, int threshold)
|
peek | back to summary |
---|---|
public E peek() Implements io. Doc from io. Called from the consumer thread subject to the restrictions appropriate to the implementation and
according to the Implementation Notes
|
poll | back to summary |
---|---|
public E poll() Implements io. Doc from io. Called from the consumer thread subject to the restrictions appropriate to the implementation and
according to the Implementation Notes
|
relaxedOffer | back to summary |
---|---|
public boolean relaxedOffer(E e) Implements io. Doc from io. Called from a producer thread subject to the restrictions appropriate to the implementation. As opposed
to
|
relaxedPeek | back to summary |
---|---|
public E relaxedPeek() Implements io. Doc from io. Called from the consumer thread subject to the restrictions appropriate to the implementation. As
opposed to
|
relaxedPoll | back to summary |
---|---|
public E relaxedPoll() Implements io. Doc from io. Called from the consumer thread subject to the restrictions appropriate to the implementation. As
opposed to
|
weakOffer | back to summary |
---|---|
public int weakOffer(E e)
Deprecated This was renamed to failFastOffer please migrate
|