MCPcopy Create free account
hub / github.com/VirtualGL/virtualgl / tryWait

Method tryWait

util/Mutex.cpp:286–323  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

284
285
286bool Semaphore::tryWait()
287{
288 #ifdef _WIN32
289
290 DWORD err = WaitForSingleObject(sem, 0);
291 if(err == WAIT_FAILED) throw(W32Error("Semaphore::tryWait()"));
292 else if(err == WAIT_TIMEOUT) return false;
293
294 #elif defined(__APPLE__)
295
296 int err = 0;
297 do
298 {
299 err = sem_trywait(sem);
300 } while(err < 0 && errno == EINTR);
301 if(err < 0)
302 {
303 if(errno == EAGAIN) return false;
304 else throw(UnixError("Semaphore::tryWait()"));
305 }
306
307 #else
308
309 int err = 0;
310 do
311 {
312 err = sem_trywait(&sem);
313 } while(err < 0 && errno == EINTR);
314 if(err < 0)
315 {
316 if(errno == EAGAIN) return false;
317 else throw(UnixError("Semaphore::tryWait()"));
318 }
319
320 #endif
321
322 return true;
323}
324
325
326void Semaphore::post(void)

Callers 1

getMethod · 0.80

Calls 2

W32ErrorClass · 0.85
UnixErrorClass · 0.85

Tested by

no test coverage detected