是否可以为反应式扩展实现基于硬件计时器的自定义调度程序?我什至如何开始,有什么好的例子吗?
我有一个硬件,可以每毫秒向我发送一个准确的中断。我想利用它来创建更精确的 RX 调度程序。
更新
感谢Asti回答中的关键字,我找到了这篇博文,这使我发现可以实现VirtualTimeScheduler<TAbsolute,TRelative>,因为我的硬件设备为我提供了绝对时间戳。
我不确定它会有多准确(在 GC'd 系统中很难做出截止日期保证),但这是我的开始方式。
-
首先实现
IScheduler
接口。 -
在内部,使用
System.Reactive.Concurrency.SchedulerQueue<TAbsolute>
类来维护计划项目的优先级队列。TAbsolute
是每个计划项目的绝对到期时间的类型,因此如果选择最接近硬件提供的数字类型,可能会更容易。 -
通过对项目使用优先队列,您只需评估队列中的第一个项目是否到期。您可以缓存下一个到期时间,并在每次中断时进行比较。
-
此外,实现
ISchedulerPeriodic
接口,使其能够针对定期计划进行更多优化。
祝你好运!