How to query the thread count of a process using the regular Windows C/C++ APIs
Solution 1
See this example: http://msdn.microsoft.com/en-us/library/ms686852(v=VS.85).aspx
Solution 2
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 copunt 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 first 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
Kaushik Sarkar
I am a Windows dev by trade, with some specialization in the integration of 3rd party media APIs, especially QuickTime and Windows Media.
Updated on June 15, 2022Comments
-
Kaushik Sarkar almost 2 years
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
-
Kaushik Sarkar over 13 yearsThanks 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
-
Ivo over 13 yearsGlad to help, nice of you to also post an answer.