From ff7e6e9db6aa558c7dded54e5a427c4a888afd72 Mon Sep 17 00:00:00 2001 From: Nelson Tavares de Sousa <ntd@informatik.uni-kiel.de> Date: Thu, 16 Apr 2015 16:59:04 +0200 Subject: [PATCH] added check whether the following stage is terminated on adding elements to a full pipe --- src/main/java/teetime/framework/pipe/SpScPipe.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/main/java/teetime/framework/pipe/SpScPipe.java b/src/main/java/teetime/framework/pipe/SpScPipe.java index 3160d38b..bf28520d 100644 --- a/src/main/java/teetime/framework/pipe/SpScPipe.java +++ b/src/main/java/teetime/framework/pipe/SpScPipe.java @@ -18,6 +18,7 @@ package teetime.framework.pipe; import teetime.framework.AbstractInterThreadPipe; import teetime.framework.InputPort; import teetime.framework.OutputPort; +import teetime.framework.StageState; import teetime.util.concurrent.queue.ObservableSpScArrayQueue; public final class SpScPipe extends AbstractInterThreadPipe implements IMonitorablePipe { @@ -44,8 +45,11 @@ public final class SpScPipe extends AbstractInterThreadPipe implements IMonitora public boolean add(final Object element) { // BETTER introduce a QueueIsFullStrategy while (!this.queue.offer(element)) { - this.numWaits++; // Thread.yield(); + if (this.cachedTargetStage.getCurrentState() == StageState.TERMINATED) { + return false; + } + this.numWaits++; try { Thread.sleep(1); } catch (InterruptedException e) { -- GitLab