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

SDL_TryLockMutex

ブロックせずにmutexのロックを試みる

構文

int SDL_TryLockMutex(SDL_mutex* mutex)

引数

mutexロックを試みるmutex

戻り値

0, SDL_MUTEX_TIMEDOUT, または-1を戻す. SDL_GetError()で詳細を知ることができる.

サンプルコード

int status;
SDL_mutex *mutex;

mutex = SDL_CreateMutex();
if (!mutex) {
  SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "mutexを生成できなかった¥n");
  return;
}

status = SDL_TryLockMutex(mutex);

if (status == 0) {
    SDL_Log("mutexをロックした¥n");
    SDL_UnlockMutex(mutex);
} else if (status == SDL_MUTEX_TIMEDOUT) {
    /* 今はmutexをロックできない */
} else {
    SDL_LogError(stderr, "mutexをロックできなかった¥n");
}

SDL_DestroyMutex(mutex);

詳細

この関数はSDL_LockMutex()と似ているが, mutexが使えない場合, 即座にSDL_MUTEX_TIMEOUTを戻す.

これは資源を排他的にアクセスしたいが待つことができない場合に有用で, その場合は後で再び試みることになる.

バージョン

SDL 2.0.0以降

関連項目(関数)

SDL_CreateMutex
SDL_DestroyMutex
SDL_LockMutex
SDL_UnlockMutex

SDL Wikiへのリンク

SDL_TryLockMutex - SDL Wiki