私が取り組んでいるゲームでは、オーディオを別のスレッドにスローして、サウンドをキューに入れ、すぐに再生できるようにしたいと考えていました。そのスレッドで使用しているコードは次のようになります
private void _checkForThingsToPlay()
{
while (true)
{
if (_song != null)
{
_playSong(_song);
_song = null;
}
while (_effects.Count > 0)
_playSfx(_effects.Dequeue());
Thread.Sleep(100);
}
}
これは非同期で実行され、美しく機能します。ただし、スリープを呼び出さないと、CPU のコア全体が消費されます。私の質問は、sleep() は CPU 使用率を下げる効率的な方法ですか、それともこれを行うためのより良い方法はありますか? 私の友人と私は、これは簡単なハックだと感じています。