【发布时间】:2018-08-01 14:17:21
【问题描述】:
我是 RX 新手,开始了解一些概念。我在网上没有找到。
我在我的代码中使用了一个计时器:
Observable.Timer(TimeSpan.FromSeconds(2), schedulerProvider.CurrentThread);
// where schedulerProvider.CurrentThread is actually Scheduler.CurrentThread
我了解 Timer 是一个Cold Observable,每个订阅者都会获得其私人计时器,该计时器将在订阅时运行 2 秒。
我在 thread1 中创建了那个冷的 observable 并使用 thread2 [,thread3 订阅它,thread4 等等...]
所以问题是:它将在哪个线程中运行?
请提供来源。
谢谢!
编辑:感谢您的详细回答。现在我知道我的问题有问题。作为第二个参数传递的调度程序是 NOT 用于订阅者调度,但用于运行计时器。 默认情况下,大多数 RX 运算符在同一线程上运行,但 Timer 是(几个)异常之一。默认情况下,计时器本身将在线程池上运行,并在同一线程上调用 OnNext。如果您要求它使用 CurrentThread 调度程序,计时器本身将在同一个线程上运行(就像大多数 Rx 运算符一样),并且订阅者将在同一个线程上被调用。 (虽然对于常规用例,这不是很推荐)。
【问题讨论】:
标签: c# .net system.reactive