System.Reactive 在 Scheduler.Default 和 TaskPoolScheduler.Default 之间选择
System.Reactive choosing between Scheduler.Default and TaskPoolScheduler.Default
我很难在 Scheduler.Default
和 TaskPoolScheduler.Default
之间做出选择。
我看到它建议 TaskPoolScheduler 更多 efficient/optimised 并且它当然有更多 explicit/specific 的好处;然而,这并不能帮助我理解真正的区别,因为在功能上它们似乎做同样的事情。
什么时候 Scheduler.Default
优于 TaskPoolScheduler.Default
,反之亦然?
Scheduler.Default
等同于 DefaultScheduler.Instance
.
DefaultScheduler
如何处理 thunk? DefaultScheduler
位于平台抽象层之上,该层根据其所在的系统来安排工作。
这曾经是 System.Reactive.PlatformServices.dll
程序集,它会根据平台的不同而有所不同,但对于 4.x 它只是一个空的外观程序集以保持与 3.x 的兼容性,与实施移至 System.Reactive.dll
。
对于默认调度程序:
- 截至目前,为了安排即时工作,使用
ThreadPool
。
- 对于周期性事件 (
SchedulePeriodic
),使用 System.Threading.Timer
。
- 对于运行速度尽可能快的工作,使用新线程。
选择什么平台服务的详细信息在EnlightenmentProvider。
当您有长运行 计算或时间跨度非常小或为零的周期性事件时,您可以使用DefaultScheduler
,尽管EventLoopScheduler
可能更好。
尽可能选择 TaskPoolScheduler
。它是一种用于短计算的轻量级实现。
我很难在 Scheduler.Default
和 TaskPoolScheduler.Default
之间做出选择。
我看到它建议 TaskPoolScheduler 更多 efficient/optimised 并且它当然有更多 explicit/specific 的好处;然而,这并不能帮助我理解真正的区别,因为在功能上它们似乎做同样的事情。
什么时候 Scheduler.Default
优于 TaskPoolScheduler.Default
,反之亦然?
Scheduler.Default
等同于 DefaultScheduler.Instance
.
DefaultScheduler
如何处理 thunk? DefaultScheduler
位于平台抽象层之上,该层根据其所在的系统来安排工作。
这曾经是 System.Reactive.PlatformServices.dll
程序集,它会根据平台的不同而有所不同,但对于 4.x 它只是一个空的外观程序集以保持与 3.x 的兼容性,与实施移至 System.Reactive.dll
。
对于默认调度程序:
- 截至目前,为了安排即时工作,使用
ThreadPool
。 - 对于周期性事件 (
SchedulePeriodic
),使用System.Threading.Timer
。 - 对于运行速度尽可能快的工作,使用新线程。
选择什么平台服务的详细信息在EnlightenmentProvider。
当您有长运行 计算或时间跨度非常小或为零的周期性事件时,您可以使用DefaultScheduler
,尽管EventLoopScheduler
可能更好。
尽可能选择 TaskPoolScheduler
。它是一种用于短计算的轻量级实现。