Windows API: как найти количество активных потоков в текущем процессе? - PullRequest
0 голосов
/ 23 марта 2011

Я написал сервер на базе boost :: asio в Windows платформе. Я хочу регистрировать текущий активный счетчик потоков моего приложения через регулярные промежутки времени.

Я вижу количество потоков для моего приложения в представлении процесса диспетчера задач Windows в столбце «Потоки». Есть ли Windows API, чтобы получить то же самое?

после бесполезного поиска в течение некоторого времени я подумал, что лучше всего обратиться за советом к SO.

1 Ответ

1 голос
/ 23 марта 2011

Раймонд Чен имеет ответ , основанный на Библиотеке справки инструмента .

Для полноты его пример кода выглядит следующим образом:

#include <stdio.h>
#include <windows.h>
#include <tlhelp32.h>

int __cdecl main(int argc, char **argv)
{
 HANDLE h = CreateToolhelp32Snapshot(TH32CS_SNAPTHREAD, 0);
 if (h != INVALID_HANDLE_VALUE) {
  THREADENTRY32 te;
  te.dwSize = sizeof(te);
  if (Thread32First(h, &te)) {
   do {
     if (te.dwSize >= FIELD_OFFSET(THREADENTRY32, th32OwnerProcessID) +
                      sizeof(te.th32OwnerProcessID)) {
       printf("Process 0x%04x Thread 0x%04x\n",
             te.th32OwnerProcessID, te.th32ThreadID);
     }
   te.dwSize = sizeof(te);
   } while (Thread32Next(h, &te));
  }
  CloseHandle(h);
 }
 return 0;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...