MCPcopy Create free account
hub / github.com/GarageGames/Torque2D / acquire

Method acquire

engine/source/platformAndroid/AndroidSemaphore.cpp:67–95  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

65}
66
67bool Semaphore::acquire( bool block, S32 timeoutMS )
68{
69
70 bool ok;
71 AssertFatal(mData, "Semaphore::acquireSemaphore: invalid semaphore");
72
73 ok = pthread_mutex_lock(&mData->mDarkroom);
74 AssertFatal(ok == 0,"Mutex Lock failed on mDarkroom in acquireSemaphore().");
75
76 if(mData->count <= 0 && !block) {
77 ok = pthread_mutex_unlock(&mData->mDarkroom);
78 AssertFatal(ok == 0,"Mutex Unlock failed on mDarkroom when not blocking in acquireSemaphore().");
79 return false;
80 }
81
82
83 while( mData->count <= 0 )
84 {
85 ok = pthread_cond_wait(&mData->mCond, &mData->mDarkroom); // releases mDarkroom while blocked.
86 AssertFatal(ok == 0,"Waiting on mCond failed in acquireSemaphore().");
87 }
88
89 mData->count--;
90
91 ok = pthread_mutex_unlock(&mData->mDarkroom);
92 AssertFatal(ok == 0,"Mutex Unlock failed on mDarkroom when leaving acquireSemaphore().");
93
94 return true;
95}
96
97void Semaphore::release()
98{

Callers 3

startMethod · 0.45
joinMethod · 0.45
isAliveMethod · 0.45

Calls

no outgoing calls

Tested by

no test coverage detected