0

TempoClock.default.sched[MWE を準備しています] を含む関数を含むクラスを使用しています。クラスの新しいインスタンスを作成して関数を適用すると、次のエラー メッセージが表示されます。

スケジューラ キューがいっぱいです。

このメッセージは常に繰り返されます。どういう意味ですか?

4

1 に答える 1

2

すべてのクロックには、スケジュールされたイベントを格納するためのキューがあります。キューのサイズは非常に大きいですが、それでも制限があります (~4096 アイテムだと思いますか?)。「スケジューラ キューがいっぱいです」というエラーは、このキューがいっぱいになると発生します。これは、特定のクロックで 4096 を超えるイベントが合法的にスケジュールされている場合に発生する可能性があります。しかし、よくあるバグのケースは、誤ってはるか先のイベントを待ち行列に入れ、それらが永遠に待ち行列にたまり、最終的にいっぱいになってしまうことです。たとえば、.sched(...) を呼び出すと、相対的な時間の値を取りますが、絶対的な時間を渡そうとすると、これを行うのは簡単です (はるかに将来のイベントをスケジュールすることになります)。

特定の時間に実際に 4096 を超えるイベントをスケジュールする必要がある場合、Scheduler クラスには、任意に大きくできるキューがあると思います。AppClock はこのスケジューラを使用するため、多数のイベントが発生しても問題はありません。ただし、AppClock のタイミングは SystemClock ほど正確ではなく、きめ細かな音楽イベントには適していません。非常に正確なタイミングが必要な場合は、複数の TempoClock を使用できます。たとえば、楽器ごとに異なるものを使用したり、イベントの種類ごとに異なるものを使用したりできます。

于 2016-10-25T21:04:06.883 に答える