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

# SDL_LockMutex

mutexをロックする

## 構文

`int SDL_LockMutex(SDL_mutex* mutex)`

## 引数

mutex | ロックするmutex

## 戻り値

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

## サンプルコード

``

    SDL_mutex *mutex;

    mutex = SDL_CreateMutex();
    if (!mutex) {
        fprintf(stderr, "mutexを生成できなかった\n");
        return;
    }

    if (SDL_LockMutex(mutex) == 0) {
        /* ここでmutexがロックされている間の処理を行う */
        SDL_UnlockMutex(mutex);
    } else {
        fprintf(stderr, "mutexをロックできなかった\n");
    }

    SDL_DestroyMutex(mutex);

## 詳細

この関数はmutexが利用可能になるまで, つまりアンブロックか, OSが次にロックするスレッドとして選ばれるまでブロックする. mutexのロックを待っている全てのスレッドの内, 一度にロックできるのは1つのみである.

ロック中のスレッドで再びロックすることは可能である. 他のスレッドで利用可能にするには, 同じ回数だけアンロックする必要がある(これは「再入可能mutex」と呼ばれる).

## バージョン

SDL 2.0.0以降

## 関連項目(関数)

SDL_CreateMutex
SDL_DestroyMutex
SDL_TryLockMutex
SDL_UnlockMutex

## SDL Wikiへのリンク

SDL_LockMutex - SDL Wiki