目次 - 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