Состояние гонки с счетчиками производительности для текущего процесса - PullRequest
0 голосов
/ 28 сентября 2011

Я пытаюсь обойти старую проблему " Как получить счетчик производительности Windows для текущего процесса ".По сути, я перечисляю экземпляры объекта процесса , чтобы получить список объектов процесса, которые я могу затем запросить для их идентификатора процесса и сравнить со своим собственным.

На основе этого я могу построить счетчик производительностипуть с использованием правильного индекса экземпляра (для создания чего-то похожего на \Process(my_program#3)\<counter>), который я затем могу использовать для запроса любого интересующего его счетчика. Но что произойдет, если один или несколько других экземпляров my_program завершат работу до PdhAddCounter вызов?Если я правильно понимаю, это будет означать, что мой встречный путь теперь относится к другому процессу или теперь недопустим.Они могут даже исчезнуть при запросе идентификатора процесса ...

Как предотвратить невозможность использования пути счетчика до того, как я смогу использовать его для получения дескриптора счетчика?

1 Ответ

0 голосов
/ 28 сентября 2011

Ух ты, ты прав. Это кажется мне серьезным недостатком дизайна. В принципе, невозможно надежно контролировать экземпляр, если его имя не уникально. Я наткнулся на обходной путь специально для объектов Process и Thread, но это глобальная настройка, которая может повлиять на другие приложения.

Я думаю, что самый безопасный способ сделать это - наблюдать за всеми объектами процесса и каждый раз, когда вы собираете данные, проходите и находите объект с нужным идентификатором процесса.

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