對於我正在處理的遊戲,我想將音頻放在另一個線程中,這樣我就可以排列聲音並立即播放它們。我在該線程中使用的代碼看起來像這樣線程和睡眠()
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使用率的有效方法,還是有更好的方法來做到這一點?我的朋友和我覺得這是一個快速入侵。
如果您可以使用Reactive Framework(Rx),那麼您會發現大量的「調度程序」用於對異步操作進行排序。 – Enigmativity