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