使用反应式扩展时命名线程



我经常使用多任务处理,我正在努力将反应式扩展添加到我的工具集中。然而,我更喜欢命名线程,这样我就可以更好地了解当我中断等时运行的线程是什么。总的来说,这更好。然而,当我使用SubscribeOn和ObserveOn等的反应式扩展时,我还没有找到一个很好的方法来命名线程。

有什么想法吗?

如果您同时使用NewThreadScheduler,您可以为其创建一个子类来自定义它创建的Thread,然后在使用ObserveOnSubscribeOn时使用您的自定义调度器。。。

// created threads will have names prefixed with "bob"
someObservable.ObserveOn(new CustomNewThreadScheduler("bob"))...

使用Rx时,大多数"线程"分为三个阵营:

  1. SubscribeOnObserveOn的目标,将基于框架指定的SynchronizationContext。如果您使用用户界面,这通常是"主UI"线程,因此命名主线程将为您提供正确的名称
  2. ThreadPool线程,实际上不能(或者至少通常不应该)命名,因为它们没有出现和消失的特定生命周期。如果在ThreadPool线程上引发了一个事件并被观察到,那么就没有好的方法来"命名"这些线程
  3. 一个你自己创建的线程,如果你愿意,可以很容易地命名

由于2/3的选项允许您提供名称,因此您可以始终命名这些线程,然后假设调试期间监视的任何未命名线程都是ThreadPool托管线程。

相关内容

  • 没有找到相关文章

最新更新