Как узнать количество активных потоков? - PullRequest
7 голосов
/ 30 апреля 2010

У меня есть программа, которая вызывает библиотеку C ++.Программа обрабатывает большое количество потоков (50 - 60).Большинство из них, похоже, созданы на C ++, и я подозреваю, что большинство из них приостановлены / ожидают.

Как узнать, сколько из этих потоков активно в данный момент времени?

Ответы [ 2 ]

13 голосов
/ 01 мая 2012

Чтобы реально определить количество активных потоков, необходимо проверить свойство ThreadState каждого потока.

((IEnumerable)System.Diagnostics.Process.GetCurrentProcess().Threads)
    .OfType<System.Diagnostics.ProcessThread>()
    .Where(t => t.ThreadState == System.Diagnostics.ThreadState.Running)
    .Count();
4 голосов
/ 30 апреля 2010

Вы можете использовать Process Explorer для проверки потоков. Он в режиме реального времени сообщит вам, сколько ЦП потребляет каждый, и может дать вам отдельные трассировки стека, которые будут указывать, на что они заблокированы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...