From 59d0253b61c5d6aed320b69019d622da168d31c2 Mon Sep 17 00:00:00 2001 From: "Tristan B. Velloza Kildaire" Date: Sat, 26 Nov 2022 17:26:05 +0200 Subject: [PATCH] Implemented `agressiveTryLock` check so the user can choose whether or not to yield if a fail to grab the lock occurs --- source/eventy/engine.d | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/source/eventy/engine.d b/source/eventy/engine.d index 8483379..72cdec0 100644 --- a/source/eventy/engine.d +++ b/source/eventy/engine.d @@ -251,13 +251,15 @@ public final class Engine : Thread /** * Lock the queue-set * - * Additionally: - * Don't waste time spinning on mutex, - * if it is not lockable then yield + * TODO: Maybe add sleep support here too? */ while (!queueLock.tryLock_nothrow()) { - yield(); + // Don't waste time spinning on mutex, yield if failed + if(!settings.agressiveTryLock) + { + yield(); + } } foreach (Queue queue; queues)