From b703fc1c0ff369a09018b54645c2832859816cf4 Mon Sep 17 00:00:00 2001 From: Florian Schmaus <flow@cs.fau.de> Date: Mon, 19 Jun 2017 08:18:01 +0200 Subject: [PATCH] Add overflow feature to LAWS scheduler --- emper/strategies/laws/LawsScheduler.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/emper/strategies/laws/LawsScheduler.cpp b/emper/strategies/laws/LawsScheduler.cpp index 394e8c1a..5e605992 100644 --- a/emper/strategies/laws/LawsScheduler.cpp +++ b/emper/strategies/laws/LawsScheduler.cpp @@ -3,6 +3,8 @@ #include "Common.hpp" #include "Runtime.hpp" +#define EMPER_OVERFLOW_QUEUE + thread_local adt::MpscQueue<Fiber> priorityQueue; thread_local LawsScheduler::WsQueue<LawsScheduler::QUEUE_SIZE> LawsScheduler::queue; @@ -34,7 +36,11 @@ void LawsScheduler::schedule(Fiber& fiber) { } bool pushed = queue.pushBottom(&fiber); if (unlikely(!pushed)) { - abort(); +#ifdef EMPER_OVERFLOW_QUEUE + priorityQueue.enqueue(&fiber); +#else + ABORT("Could not push fiber " << &fiber << " into queue"); +#endif } } -- GitLab