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 回答