int SDL_CondWait(SDL_cond* cond, SDL_mutex* mutex)
cond | 待つ条件変数 |
mutex | スレッドアクセスを制御するためのmutex |
条件変数の典型的な使い方:
SDL_bool condition = SDL_FALSE;
SDL_mutex *lock;
SDL_cond *cond;
lock = SDL_CreateMutex();
cond = SDL_CreateCond();
.
.
Thread A:
SDL_LockMutex(lock);
while (!condition) {
SDL_CondWait(cond, lock);
}
SDL_UnlockMutex(lock);
Thread B:
SDL_LockMutex(lock);
...
condition = SDL_TRUE;
...
SDL_CondSignal(cond);
SDL_UnlockMutex(lock);
.
.
SDL_DestroyCond(cond);
SDL_DestroyMutex(lock);
この関数はmutexのロックを解除し, 別のスレッドがSDL_CondSignal()かSDL_CondBroadcast()を呼んで条件変数condを通知するまで待つ. 条件変数が通知されれば, mutexは再びロックされ, 関数から戻る.
mutexはこの関数を呼ぶ前にロックされている必要がある.
この関数は, SDL_CondWaitTimeout()の待ち時間をSDL_MUTEX_MAXWAITとしたのと同じである.