From a351d2920b9ed4656c0b37fb1bb06a006f98d082 Mon Sep 17 00:00:00 2001 From: mutouyun Date: Sat, 8 Jun 2019 18:08:03 +0800 Subject: [PATCH] modify semaphore::wait (win) --- src/platform/waiter_win.h | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/src/platform/waiter_win.h b/src/platform/waiter_win.h index 7aa87d5..9b3a1fd 100644 --- a/src/platform/waiter_win.h +++ b/src/platform/waiter_win.h @@ -37,18 +37,15 @@ public: bool wait(std::size_t tm = invalid_value) { DWORD ret, ms = (tm == invalid_value) ? INFINITE : static_cast(tm); - if ((ret = ::WaitForSingleObject(h_, ms)) == WAIT_OBJECT_0) { - return true; - } - if (ret == WAIT_ABANDONED) { - ipc::log("WaitForSingleObject ret: WAIT_ABANDONED\n"); + switch ((ret = ::WaitForSingleObject(h_, ms))) { + case WAIT_OBJECT_0: return true; + case WAIT_ABANDONED: + case WAIT_TIMEOUT: + default: + ipc::error("fail WaitForSingleObject[%lu]: 0x%08X\n", ::GetLastError(), ret); + return false; } - if (ret == WAIT_TIMEOUT) { - return false; - } - ipc::error("fail WaitForSingleObject[%lu]: 0x%08X\n", ::GetLastError(), ret); - return false; } bool post(long count = 1) {