在反应式扩展中实现自定义硬件定时器-基调度程序



是否可以为反应式扩展实现基于硬件计时器的自定义调度程序?我什至如何开始,有什么好的例子吗?

有一个硬件,可以每毫秒向我发送一个准确的中断。我想利用它来创建更精确的 RX 调度程序。

更新

感谢Asti回答中的关键字,我找到了这篇博文,这使我发现可以实现VirtualTimeScheduler<TAbsolute,TRelative>,因为我的硬件设备为我提供了绝对时间戳。

我不确定它会有多准确(在 GC'd 系统中很难做出截止日期保证),但这是我的开始方式。

  • 首先实现IScheduler接口。

  • 在内部,使用 System.Reactive.Concurrency.SchedulerQueue<TAbsolute> 类来维护计划项目的优先级队列。 TAbsolute是每个计划项目的绝对到期时间的类型,因此如果选择最接近硬件提供的数字类型,可能会更容易。

  • 通过对项目使用优先队列,您只需评估队列中的第一个项目是否到期。您可以缓存下一个到期时间,并在每次中断时进行比较。

  • 此外,实现 ISchedulerPeriodic 接口,使其能够针对定期计划进行更多优化。

祝你好运!

相关内容

  • 没有找到相关文章

最新更新