.net core 在Scheduler.Default和TaskPoolScheduler.Default之间选择System

.net core 在Scheduler.Default和TaskPoolScheduler.Default之间选择System,.net-core,system.reactive,.net Core,System.reactive,在Scheduler.Default和TaskPoolScheduler.Default之间进行选择时,我遇到了很大的困难 我看到有人建议TaskPoolScheduler更高效/优化,它当然有更明确/具体的好处;然而,这并不能帮助我理解真正的区别,因为它们在功能上似乎做了相同的事情 When是调度程序。Default优于TaskPoolScheduler。Default反之亦然?调度程序。Default与DefaultScheduler.Instance相同 DefaultScheduler如

Scheduler.Default
TaskPoolScheduler.Default
之间进行选择时,我遇到了很大的困难

我看到有人建议TaskPoolScheduler更高效/优化,它当然有更明确/具体的好处;然而,这并不能帮助我理解真正的区别,因为它们在功能上似乎做了相同的事情


When是
调度程序。Default
优于
TaskPoolScheduler。Default
反之亦然?

调度程序。Default
DefaultScheduler.Instance
相同

DefaultScheduler
如何处理thunks
DefaultScheduler
位于一个平台抽象层的顶部,该层根据它所在的系统安排工作

这曾经是
System.Reactive.PlatformServices.dll
程序集,根据平台的不同而有所不同,但是对于4.x来说,它只是一个空的外观程序集,以保持与3.x的兼容性,实现被移动到
System.Reactive.dll

对于DefaultScheduler:

  • 到目前为止,为了安排即时工作,使用了
    ThreadPool
  • 对于周期性事件(
    SchedulePeriodic
    ),使用
    System.Threading.Timer
  • 对于运行速度尽可能快的工作,使用新线程
选择哪种平台服务的详细信息见

当您有长时间运行的计算或时间跨度非常小或为零的周期性事件时,您可以使用
DefaultScheduler
,尽管
EventLoopScheduler
可能更好

如有可能,首选
TaskPoolScheduler
。这是一个轻量级的实现,用于短时间的计算