目次 - API(機能別) - 同期プリミティブ - SDL_CondWait

SDL_CondWait

条件変数が通知されるまで待つ

構文

int SDL_CondWait(SDL_cond* cond, SDL_mutex* mutex)

引数

cond待つ条件変数
mutexスレッドアクセスを制御するためのmutex

戻り値

成功のとき0, 失敗のとき負の数のエラーコードを戻す. SDL_GetError()で詳細を知ることができる.

サンプルコード

条件変数の典型的な使い方:

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としたのと同じである.

関連項目(関数)

SDL_CondBroadcast
SDL_CondSignal
SDL_CondWaitTimeout
SDL_CreateCond
SDL_DestroyCond

SDL Wikiへのリンク

SDL_CondWait - SDL Wiki