System.Reactive在Scheduler.Default和TaskPoolScheduler.Default之间进行选择

问题描述 投票:1回答:1

我在Scheduler.DefaultTaskPoolScheduler.Default之间进行选择时遇到很大的困难。

我已经看到它建议TaskPoolScheduler更加有效/优化,并且肯定具有更明确/特定的好处;但是,鉴于它们在功能上似乎执行相同的操作,因此这并不能帮助我理解真正的差异。

Scheduler.Default何时比TaskPoolScheduler.Default更可取?

.net-core system.reactive
1个回答
2
投票

[Scheduler.DefaultDefaultScheduler.Instance相同。

DefaultScheduler如何处理重音? DefaultScheduler位于平台抽象层之上,该层根据其所使用的系统来调度工作。

以前是System.Reactive.PlatformServices.dll程序集,根据平台的不同而有所不同,但对于4.x,它只是一个空的外观程序集,与3.x保持兼容,并且实现已移至System.Reactive.dll

对于DefaultScheduler:

  • 到目前为止,为了安排即时工作,使用了ThreadPool
  • 对于周期性事件(SchedulePeriodic),使用System.Threading.Timer
  • 为了使工作尽可能快地运行,请使用新线程。

选择哪种平台服务的详细信息在EnlightenmentProvider中。

[Timespan很小或为零,但长时间运行的计算或周期性事件可能会使用DefaultScheduler,尽管EventLoopScheduler可能更好。

尽可能使用TaskPoolScheduler。这是一种用于短计算的轻量级实现。

© www.soinside.com 2019 - 2024. All rights reserved.