9

Is there a way to query the number of threads that are currently running for a specific process using the standard Windows C/C++ APIs?

I already prowled through the MSDN docs but the only thing that comes near is

BOOL WINAPI GetProcessHandleCount( __in HANDLE hProcess, __inout PDWORD pdwHandleCount ); 

which queries the number of system handles currently in use by a given process, which will include thread handles, but will not be limited to them.

Any insights would be greatly appreciated.

Thanks in advance.

Bjoern

2 Answers 2

11

Just to be complete here is some sample code based on the code sample, which can be found under the link stated in the comments section of the accepted answer:

#if defined(_WIN32) #include <windows.h> #include <tlhelp32.h> /** Returns the thread count of the current process or -1 in case of failure. */ int GetCurrentThreadCount() { // first determine the id of the current process DWORD const id = GetCurrentProcessId(); // then get a process list snapshot. HANDLE const snapshot = CreateToolhelp32Snapshot( TH32CS_SNAPALL, 0 ); // initialize the process entry structure. PROCESSENTRY32 entry = { 0 }; entry.dwSize = sizeof( entry ); // get the current process info. BOOL ret = true; ret = Process32First( snapshot, &entry ); while( ret && entry.th32ProcessID != id ) { ret = Process32Next( snapshot, &entry ); } CloseHandle( snapshot ); return ret ? entry.cntThreads : -1; } #endif // _WIN32 
Sign up to request clarification or add additional context in comments.

Comments

5

See this example: http://msdn.microsoft.com/en-us/library/ms686852(v=VS.85).aspx

2 Comments

Thanks for the hint, it sent me in the right direction. Actually this sample even more matched what I needed: msdn.microsoft.com/en-us/library/ms686701(v=VS.85).aspx
Glad to help, nice of you to also post an answer.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.