mirror of
https://github.com/mutouyun/cpp-ipc.git
synced 2025-12-07 01:06:45 +08:00
modify semaphore::wait (win)
This commit is contained in:
parent
dc3ef4d4b9
commit
a351d2920b
@ -37,19 +37,16 @@ public:
|
|||||||
|
|
||||||
bool wait(std::size_t tm = invalid_value) {
|
bool wait(std::size_t tm = invalid_value) {
|
||||||
DWORD ret, ms = (tm == invalid_value) ? INFINITE : static_cast<DWORD>(tm);
|
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;
|
return true;
|
||||||
}
|
case WAIT_ABANDONED:
|
||||||
if (ret == WAIT_ABANDONED) {
|
case WAIT_TIMEOUT:
|
||||||
ipc::log("WaitForSingleObject ret: WAIT_ABANDONED\n");
|
default:
|
||||||
return true;
|
|
||||||
}
|
|
||||||
if (ret == WAIT_TIMEOUT) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
ipc::error("fail WaitForSingleObject[%lu]: 0x%08X\n", ::GetLastError(), ret);
|
ipc::error("fail WaitForSingleObject[%lu]: 0x%08X\n", ::GetLastError(), ret);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
bool post(long count = 1) {
|
bool post(long count = 1) {
|
||||||
if (::ReleaseSemaphore(h_, count, NULL)) {
|
if (::ReleaseSemaphore(h_, count, NULL)) {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user