Skip to content
Snippets Groups Projects
Commit 0fba96d7 authored by Nelson Tavares de Sousa's avatar Nelson Tavares de Sousa
Browse files

changed signal field to a ConcurrentQueue

parent 57977e74
No related branches found
No related tags found
No related merge requests found
package teetime.framework.pipe;
import java.util.concurrent.atomic.AtomicReference;
import java.util.Queue;
import org.jctools.queues.QueueFactory;
import org.jctools.queues.spec.ConcurrentQueueSpec;
import org.jctools.queues.spec.Ordering;
import org.jctools.queues.spec.Preference;
import teetime.framework.InputPort;
import teetime.framework.OutputPort;
......@@ -8,7 +13,7 @@ import teetime.framework.signal.ISignal;
public abstract class InterThreadPipe extends AbstractPipe {
private final AtomicReference<ISignal> signal = new AtomicReference<ISignal>();
private final Queue<ISignal> signalQueue = QueueFactory.newQueue(new ConcurrentQueueSpec(1, 1, 0, Ordering.FIFO, Preference.THROUGHPUT));;
<T> InterThreadPipe(final OutputPort<? extends T> sourcePort, final InputPort<T> targetPort) {
super(sourcePort, targetPort);
......@@ -16,11 +21,11 @@ public abstract class InterThreadPipe extends AbstractPipe {
@Override
public void setSignal(final ISignal signal) {
this.signal.lazySet(signal); // lazySet is legal due to our single-writer requirement
this.signalQueue.offer(signal);
}
public ISignal getSignal() {
return this.signal.get();
return this.signalQueue.poll();
}
@Override
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment