Мониторинг потоков в службе Windows - PullRequest
0 голосов
/ 09 сентября 2010

У меня есть служба Windows, которая при запуске запускает около 60 потоков.Я использую Nagios для общего мониторинга, и у меня есть все необходимые процедуры для отправки данных в nagios.Тем не менее, я не могу понять, как получить сумму всех потоков и убедиться, что ни один из них не мертв.

В основном я хочу сделать следующее:Кажется, это должно быть очень сложно, но я не уверен, с чего начать.

Ответы [ 3 ]

1 голос
/ 09 сентября 2010

Я рекомендую добавить каждую нить в Dictionary<int, Thread> с ключом ManagedThreadId. Затем передайте метод обратного вызова каждому потоку, который возвращает свой ManagedThreadId, когда он завершается. Затем обратный вызов удаляет поток из словаря и сообщает Nagios.

Вы можете использовать свойство Name потока для основных описательных данных или создать пользовательский объект для хранения другой информации о процессе и сохранения этого словаря вместо потока.

1 голос
/ 09 сентября 2010

Просто комментарий, 60 - это много тем как фиксированное число. Возможно, вы захотите рассмотреть цикл обработки (даже если он имеет собственный выделенный поток) - гораздо проще в отладке и более масштабируемым.

Но если вам ДЕЙСТВИТЕЛЬНО это нужно, один из вариантов заключается в том, чтобы ... когда поток начинался, сделать взаимосвязанное приращение некоторого общего счетчика. Непосредственно перед тем, как поток завершит свою работу, сделайте взаимосвязанный декремент.

0 голосов
/ 09 сентября 2010

Если у вас есть особые потребности в программировании с потоками, вам может понравиться проект SmartThreadPool .

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