void MIX_LockMixer(MIX_Mixer *mixer);
| MIX_Mixer * | mixer | ロックするミキサー. NULLも可 |
ロック中のミキサーは, 別のスレッドからのオーディオデータのミックスや内部の状態の変更ができなくなる. 別のスレッドはミキサーのロックが解除されるまでブロックされる.
この関数は内部でSDL_LockMutex()を呼んでいるため, ロックは再帰的で, ロック解除はロックと同じスレッドから同じ回数だけ行う必要があるなどの同じルールが適用される.
ほぼ全てのSDL_mixerAPIは処理の間はミキサーをロックし, 実際のミキシングの処理中はSDLオーディオデバイススレッドをロックするため, このライブラリの基本的な使い方ではスレッドの安全のためにアプリケーションがデバイスを明示的にロックする必要はない. しかし, この関数が有用な2つの場合がある:
この関数の呼び出しは, 同じスレッドからの対になったMIX_UnlockMixerの呼び出しが必要である. 1つのミキサーに対して複数回ロックしても安全である. 最後の一致したロック解除までロックは維持される.
ミキサーを長時間ロックしてはならない. そうすると音声が途切れてしまう. 単純なことのみを素早く行い, すぐに解除すべきである.
NULLミキサーをロックしようとしても安全である.
この関数はどのスレッドからも安全に呼べる.