int SDL_LockMutex(SDL_mutex* mutex)
mutex | ロックするmutex |
int status;
SDL_mutex *mutex;
mutex = SDL_CreateMutex();
if (!mutex) {
SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "mutexを生成できなかった¥n");
return;
}
status = SDL_LockMutex(mutex);
if (status == 0) {
SDL_Log("mutexをロックした¥n");
SDL_UnlockMutex(mutex);
} else {
SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "mutexをロックできなかった¥n");
}
SDL_DestroyMutex(mutex);
この関数はmutexが利用可能になるまで, つまりアンブロックか, OSが次にロックするスレッドとして選ばれるまでブロックする. mutexのロックを待っている全てのスレッドの内, 一度にロックできるのは1つのみである.
ロック中のスレッドで再びロックすることは可能である. 他のスレッドで利用可能にするには, 同じ回数だけアンロックする必要がある(これは「再入可能mutex」と呼ばれる).