int SDL_LockMutex(SDL_mutex* mutex)
mutex | ロックするmutex |
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」と呼ばれる).