From c61b2bdd1071c976635c9ce722f4dcff4b76289d Mon Sep 17 00:00:00 2001 From: Kenneth Heafield Date: Thu, 6 May 2021 00:21:50 +0100 Subject: [PATCH] Fix busy loop in windows (#131) * Fix busy loop in windows * Nick wants the while loop gone * Fix continue leftover Co-authored-by: Nikolay Bogoychev --- src/translator/pcqueue.h | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/src/translator/pcqueue.h b/src/translator/pcqueue.h index d6f4582..8d5d6e2 100644 --- a/src/translator/pcqueue.h +++ b/src/translator/pcqueue.h @@ -113,17 +113,15 @@ class Semaphore { void wait() { - while (true) { - switch (WaitForSingleObject(sem_, 0L)) { - case WAIT_OBJECT_0: - return; - case WAIT_ABANDONED: - ABORT("A semaphore can't be abandoned, confused by Windows"); - case WAIT_TIMEOUT: - continue; - case WAIT_FAILED: - ABORT("Waiting on Semaphore failed {}", GetLastError()); - } + switch (WaitForSingleObject(sem_, INFINITE)) { + case WAIT_OBJECT_0: + return; + case WAIT_ABANDONED: + ABORT("A semaphore can't be abandoned, confused by Windows"); + case WAIT_TIMEOUT: + ABORT("Timeout on an infinite wait?"); + case WAIT_FAILED: + ABORT("Waiting on Semaphore failed {}", GetLastError()); } }