3

リアクティブ拡張用のカスタムハードウェアタイマーベースのスケジューラを実装することは可能ですか?どうすれば始められますか、良い例はありますか?

ミリ秒ごとに正確な割り込みを送信できるハードウェアがあります。これを活用して、より正確なRXスケジューラーを作成したいと思います。

アップデート

Astiの回答のキーワードのおかげで、このブログ投稿を見つけました。ハードウェアデバイスから絶対タイムスタンプが提供されるため、VirtualTimeScheduler <TAbsolute、TRelative>を実装できることがわかりました。

4

1 に答える 1

5

それがどれほど正確にパンアウトするかはわかりませんが(GCされたシステムでは期限の保証を行うのは困難です)、ここから始める方法を説明します。

  • インターフェイスを実装することから始めISchedulerます。

  • 内部的には、System.Reactive.Concurrency.SchedulerQueue<TAbsolute>クラスを使用して、スケジュールされたアイテムの優先キューを維持します。TAbsoluteは各スケジュールされたアイテムの絶対期日のタイプであるため、ハードウェアによって提供されるものに最も近い数値タイプを選択すると、より簡単になる場合があります。

  • アイテムに優先キューを使用することにより、キューの最初のアイテムが期日であるかどうかを評価するだけです。おそらく次の期限をキャッシュして、すべての割り込みで比較することができます。

  • さらに、ISchedulerPeriodicインターフェイスを実装します。これにより、定期的なスケジュールに合わせてインターフェイスをより最適化できます。

幸運を!

于 2012-12-06T13:52:22.787 に答える