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; 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.InputPort;
import teetime.framework.OutputPort; import teetime.framework.OutputPort;
...@@ -8,7 +13,7 @@ import teetime.framework.signal.ISignal; ...@@ -8,7 +13,7 @@ import teetime.framework.signal.ISignal;
public abstract class InterThreadPipe extends AbstractPipe { 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) { <T> InterThreadPipe(final OutputPort<? extends T> sourcePort, final InputPort<T> targetPort) {
super(sourcePort, targetPort); super(sourcePort, targetPort);
...@@ -16,11 +21,11 @@ public abstract class InterThreadPipe extends AbstractPipe { ...@@ -16,11 +21,11 @@ public abstract class InterThreadPipe extends AbstractPipe {
@Override @Override
public void setSignal(final ISignal signal) { 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() { public ISignal getSignal() {
return this.signal.get(); return this.signalQueue.poll();
} }
@Override @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