modify semaphore::wait (win)

This commit is contained in:
mutouyun 2019-06-08 18:08:03 +08:00
parent dc3ef4d4b9
commit a351d2920b

View File

@ -37,19 +37,16 @@ public:
bool wait(std::size_t tm = invalid_value) {
DWORD ret, ms = (tm == invalid_value) ? INFINITE : static_cast<DWORD>(tm);
if ((ret = ::WaitForSingleObject(h_, ms)) == WAIT_OBJECT_0) {
switch ((ret = ::WaitForSingleObject(h_, ms))) {
case WAIT_OBJECT_0:
return true;
}
if (ret == WAIT_ABANDONED) {
ipc::log("WaitForSingleObject ret: WAIT_ABANDONED\n");
return true;
}
if (ret == WAIT_TIMEOUT) {
return false;
}
case WAIT_ABANDONED:
case WAIT_TIMEOUT:
default:
ipc::error("fail WaitForSingleObject[%lu]: 0x%08X\n", ::GetLastError(), ret);
return false;
}
}
bool post(long count = 1) {
if (::ReleaseSemaphore(h_, count, NULL)) {