PDA

Ver la Versión Completa : ¿Como analizar los archivos de una ruta recursivamente usando hilos?


JoAnCa
22-09-2022, 21:30:33
Hola a todos
Estoy creando una herramienta de limpieza de restos de virus, quisiera hacerla usando hilos para que funcione mas rápido, pero no estoy muy claro en como funciona el tema de los hilos

El algoritmo de mi herramienta es:
- Buscar recursivamente todos los archivos de la ruta especificada (en un hilo)
- Si el archivo es de las siguientes extensiones (.exe, .txt, .vbs o .lnk) pasarlo al proceso de análisis (otro hilo)
- Si cumple los patrones buscados agregarlo a una lista
- Después el usuario podrá seleccionarlos para eliminar los seleccionados o todos

No se si estará bien mi análisis, pero lo que quiero es que mientras se este analizando el archivo la búsqueda continúe.

cloayza
23-09-2022, 04:41:49
Creo que en la sección trucos hay algo que de seguro le servirá, es Cola de elementos multi-thread (https://www.clubdelphi.com/foros/showthread.php?t=92492)
Saludos cordiales

Neftali [Germán.Estévez]
23-09-2022, 09:20:48
Yo creo que no vas desencaminado.
Simplificando mucho, puedes tener la lista en el hilo principal y tener 2 threads:

* Uno para la búsqueda de ficheros que vaya añadiendo ficheros a la lista.
* Otro que realice el análisis de un fichero.

La app. principal (thread principal) debe lanzar el thread de búqueda (1) y a medida que van apareciendo elementos en la lista, debe ir lanzando el thread de análisis (1..N) para cada elementos encontrado.

NOTA: Si la búsqueda es sobre un espacio muy grande, se puede plantear el thread de búsqueda comno N.

bucanero
23-09-2022, 11:34:46
Creo que en la sección trucos hay algo que de seguro le servirá, es Cola de elementos multi-thread (https://www.clubdelphi.com/foros/showthread.php?t=92492)
Saludos cordiales

Hola a todos!!
ese truco es una de las forma de realizar lo que JoAnCa solicita.

Adjunto un ejemplo especifico para su uso en las búsquedas de ficheros/directorios con multithread.

En las pruebas que yo he realizado se obtiene una mejora a partir de los dos/tres hilos. Si se intenta utilizar mas de cinco hilos el tiempo ya se incrementa bastante con respecto a no hacerlo con hilos, pero es cuestión de probarlo en cada caso particular.

JoAnCa
23-09-2022, 16:50:07
Muchas gracias a todos por sus respuestas
Muy bueno el truco de bucanero, lo adecuaré a mis necesidades