Nuestro escenario es un escáner de red.En .NET, ¿hay un programador de subprocesos para subprocesos de larga ejecución?
Se conecta a un conjunto de hosts y los escanea en paralelo durante un tiempo utilizando subprocesos de fondo de baja prioridad.
Quiero poder programar un montón de trabajo pero solo tengo un número de diez o cualquier cantidad de hosts analizados en paralelo. Incluso si creo mis propios hilos, las muchas devoluciones de llamada y otras bondades asincrónicas utilizan el ThreadPool y termino quedándome sin recursos. Debería mirar MonoTorrent ...
Si uso THE ThreadPool, ¿puedo limitar mi aplicación a algún número que dejará suficiente para que el resto de la aplicación funcione sin problemas?
¿Hay un subproceso de subprocesos que puedo inicializar a n subprocesos de larga duración?
[Editar] Nadie parece haber notado que hice algunos comentarios sobre algunas respuestas, así que añadiré un par de cosas aquí.
- Las discusiones deben ser cancelables tanto con gracia y fuerza.
- Los subprocesos deben tener baja prioridad dejando la GUI en buen estado.
- Los subprocesos son de larga ejecución pero en orden (minutos) y no en orden (días).
trabajo para un host de destino dado es básicamente:
For each test
Probe target (work is done mostly on the target end of an SSH connection)
Compare probe result to expected result (work is done on engine machine)
Prepare results for host
¿Puede alguien explicar por qué utilizar la utilidad negativa SmartThreadPool está marcado ingenio ha?
respuesta de Jeff esternal parece adecuado, aunque en lugar de BackgroundWorker que podría ser mejor crear sus propias instancias 'System.Threading.Thread'. Sin embargo, también menciona que incluso dentro de sus propios subprocesos, se está quedando sin recursos de grupo de subprocesos debido a las operaciones asincrónicas. Tal vez deberías explicar por qué estás realizando operaciones asincrónicas dentro de un hilo que has dedicado específicamente a ejecutar esas operaciones. –
Después de buscar un poco más me encontré con otro ThreadPool http://smartthreadpool.codeplex.com/ que podría llegar al punto. Uso cosas asincrónicas en el subproceso de trabajo para manejar Salida y Errores a medida que ocurren. A medida que se ejecuta la aplicación, los usuarios reciben comentarios para que vean qué tan avanzado está cada tarea. – LogicMagic
La aplicación está escrita usando GTK # y el patrón MVC. Hay una GUI donde cuando se activan ciertos eventos, el hilo de la interfaz gráfica de usuario se organiza y se realizan actualizaciones.El escaneo no es simple, la aplicación es un escáner autenticado que observa la configuración de los objetivos. Una exploración debe tomar O (minutos) de tiempo para completarse. por host Algunos informes por host se realizan en la máquina del motor en el hilo por host por razones obvias. Se crea un proceso por conexión que probablemente sea costoso, pero en comparación con los minutos, no importa. – LogicMagic