C/Visual C - threads y procesos

 
Vista:

threads y procesos

Publicado por alvaro (10 intervenciones) el 08/08/2001 17:41:42
Hola a todos:

Me gustaría saber cómo puedo determinar el número de threads asociados a un proceso culaquiera teniendo en cuenta que el proceso corre en Windows NT o 2K. Estoy utilizando Visual C++ 6.0.

Gracias a todos.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Determinar el número de threads asociados a un proceso en Windows NT/2000

Publicado por Alejandro (913 intervenciones) el 08/10/2024 20:04:42
Álvaro, para determinar el número de threads asociados a un proceso en Windows NT o 2000 utilizando Visual C++ 6.0, puedes utilizar la API de Windows. Aquí tienes un ejemplo de cómo hacerlo:

1. Incluir las bibliotecas necesarias:
Asegúrate de incluir las siguientes bibliotecas en tu código:

1
2
#include <windows.h>
#include <tlhelp32.h>

2. Función para contar los threads:
Puedes utilizar la siguiente función para contar el número de threads de un proceso específico:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
DWORD CountThreads(DWORD processID) {
    DWORD threadCount = 0;
    HANDLE hThreadSnap = CreateToolhelp32Snapshot(TH32CS_SNAPTHREAD, 0);
 
    if (hThreadSnap == INVALID_HANDLE_VALUE) {
        return 0;
    }
 
    THREADENTRY32 te;
    te.dwSize = sizeof(THREADENTRY32);
 
    if (Thread32First(hThreadSnap, &te)) {
        do {
            if (te.th32OwnerProcessID == processID) {
                threadCount++;
            }
        } while (Thread32Next(hThreadSnap, &te));
    }
 
    CloseHandle(hThreadSnap);
    return threadCount;
}

3. Uso de la función:
Para usar la función, simplemente llama a `CountThreads` pasando el ID del proceso que deseas analizar:

1
2
3
4
5
6
int main() {
    DWORD processID = /* ID del proceso que deseas verificar */;
    DWORD numThreads = CountThreads(processID);
    printf("Número de threads en el proceso %d: %d\n", processID, numThreads);
    return 0;
}

4. Obtener el ID del proceso:
Si no tienes el ID del proceso, puedes obtenerlo utilizando `EnumProcesses` o cualquier otro método que se ajuste a tus necesidades.

Este código te permitirá contar el número de threads asociados a un proceso específico en Windows NT o 2000.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar