2012-01-24 33 views
5

Estoy tratando de encontrar si hay una mejor manera de encontrar todos los identificadores de subprocesos que pertenecen al proceso actual. Parece que usar CreateToolhelp32Snapshot con TH32CS_SNAPTHREAD e iterar sobre los hilos para verificar si el id del proceso del hilo es igual al ID del proceso actual, es una solución, pero quiero evitar iterar todos los hilos en ejecución. Solo quiero iterar sobre los hilos que pertenecen a un proceso dado. Por favor, avíseme si hay una API que sea rápida y simple. Necesito hacerlo en C++.Buscar todos los hilos de un proceso dado proceso id

Gracias, Abhinay.

+1

Parece legítimo. Consulte http://blogs.msdn.com/b/oldnewthing/archive/2006/02/23/537856.aspx – Neil

+2

Optimización prematura, una máquina no suele tener más de 1000 subprocesos activos. Puede usar TH32CS_SNAPALL para hacerlo selectivo en * th32ProcessID *. –

+0

@Hans: TH32CS_SNAPALL se describe como "Incluye todos los procesos y subprocesos en el sistema, más los montones y módulos del proceso especificado en th32ProcessID", por lo que no será de ayuda. –

Respuesta

0

Después de usar CreateToolhelp32Snapshot con TH32CS_SNAPPROCESS (0x00000002), puede obtener el hilo usando Thread32First function.

El código de ejemplo es here.

1

Si el "proceso actual" es uno que ha escrito, puede aprovechar el hecho de que las funciones DllMain se invocan cada vez que se agrega o termina un subproceso con códigos de razón de DLL_THREAD_ATTACH y DLL_THREAD_DETACH. Es simple mantener tu propia lista.

Cuestiones relacionadas