< prev index next >
src/os/windows/vm/os_windows.cpp
Print this page
*** 1907,1923 ****
::CloseHandle(_semaphore);
}
}
void Semaphore::signal(uint count) {
BOOL ret = ::ReleaseSemaphore(_semaphore, count, NULL);
assert(ret != 0, err_msg("ReleaseSemaphore failed: %d", GetLastError()));
! }
!
! void Semaphore::signal() {
! signal(1);
}
void Semaphore::wait() {
DWORD ret = ::WaitForSingleObject(_semaphore, INFINITE);
assert(ret == WAIT_OBJECT_0, err_msg("WaitForSingleObject failed: %d", GetLastError()));
--- 1907,1921 ----
::CloseHandle(_semaphore);
}
}
void Semaphore::signal(uint count) {
+ if (count > 0) {
BOOL ret = ::ReleaseSemaphore(_semaphore, count, NULL);
assert(ret != 0, err_msg("ReleaseSemaphore failed: %d", GetLastError()));
! }
}
void Semaphore::wait() {
DWORD ret = ::WaitForSingleObject(_semaphore, INFINITE);
assert(ret == WAIT_OBJECT_0, err_msg("WaitForSingleObject failed: %d", GetLastError()));
< prev index next >