2013-08-01 2 views
3

Я многозадачность использую, и я работаю над добавлением Reactive Extensions в свой набор инструментов. Однако я предпочитаю называть потоки, чтобы я мог лучше понять, какие потоки работают при разрыве и т. Д. В общем, это просто лучше. Однако я не нашел хороший способ назвать темы, когда я использую реактивные расширения с помощью SubscribeOn и ObserveOn и т. Д.Именование потоков при использовании реактивных расширений

Любые идеи?

ответ

4

Если вы используете NewThreadScheduler много, вы можете сделать подкласс этого, что настраивает Thread он создает, а затем использовать свой собственный планировщик при использовании ObserveOn или SubscribeOn ...

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

Это именно то, что я «Я сделал в прошлом, хотя я перешел обратно в бассейн, когда я переключился на Release. – JerKimball

1

При использовании Rx, большинство из «нитей» делятся на три лагеря:

  1. Цель SubscribeOn или ObserveOn, которая будет основана на рамки, указанный SynchronizationContext. Обычно это будет поток «основного пользовательского интерфейса», если вы используете пользовательский интерфейс, поэтому именование основного потока даст вам правильное имя.
  2. Нити ThreadPool, которые действительно не могут (или, по крайней мере, не должны) быть названы, поскольку они не имеют определенного жизненного цикла, который появляется и уходит. Если событие возникает в потоке ThreadPool и наблюдается, нет никакого хорошего способа «называть» эти потоки.
  3. Нить, которую вы создали сами, которую можно было бы назвать, если вы так решите.

Поскольку с помощью 2/3 опций вы можете предоставлять имена, вы всегда можете назвать эти потоки, а затем предположить, что любой неназванный поток, наблюдаемый во время отладки, является потоком, управляемым ThreadPool.

Смежные вопросы