Счетчики производительности для текущих потоков - PullRequest
1 голос
/ 27 января 2010

Я создаю службу Windows .NET, которая использует неуправляемую C ++ DLL. и мой сервис, и dll c ++ используют многопоточность. У меня заканчивается память через некоторое время (часы) во время обработки. Я пытался измерить количество потоков, используя «Счетчики производительности» и я отслеживаю следующие значения:

# of current logical Threads
# of current recognized threads
# of total recognized Threads

В то время как первое устойчиво и его значение разумно, второе и третье нет. они всегда растут и достигают огромного количества (более 1500). И они равны !!!!

Должны ли они быть равными? Я также не понял из этой страницы , будут ли эти счетчики считать как управляемые, так и неуправляемые потоки.

Я подозреваю, что неуправляемый код всегда запускает новые потоки, а не использует их повторно, но я не уверен.

кто-нибудь может помочь? Спасибо

1 Ответ

1 голос
/ 27 января 2010

Звучит как утечка. Скорее всего, неуправляемая DLL неправильно распределяет свои потоки.

Чтобы действительно проверить это, напишите однопоточное приложение, которое использует эту DLL. Контролировать приложение. Если вы замечаете, что это не устраивает вещи должным образом, у вас есть одна из двух ситуаций.

Либо вы не вызываете правильные методы в DLL для закрытия ресурсов (потоков). Или DLL плохо закодирована. Первый легко исправить, второму потребуется доступ к исходному коду или оригинальным разработчикам.

Если это DLL, и вы не можете связаться с ними, или они не хотят исправлять, найдите что-то еще, что делает почти то же самое.

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