Al mirar el Analizador de simultaneidad, la vista de subprocesos parece que mi aplicación produce mucho más subprocesos de lo que hubiera pensado. La mayoría de estos son un "hilo de trabajo CLR" o un "hilo de trabajo".¿Cuál es la diferencia entre un hilo de trabajo CLR y un hilo de trabajo?
¿Cuáles son las diferencias? ¿En qué circunstancias se crean cada uno?
¿En qué circunstancias el CLR crear hilos? ¿Son estos los hilos creados por [ThreadPool] (http://msdn.microsoft.com/en-us/library/system.threading.threadpool.aspx)? Dada tu respuesta, también estoy desconcertado por la gran cantidad de Trabajadores de hilos, no entiendo cómo podría haber creado tantos. – pomeroy
Realmente difícil de decir sin mirar el código de la aplicación. CLR podría crear grupos de trabajo CLR para recolección de basura, con respecto a subprocesos de aplicaciones, nuevamente esto es solo conjetura, pero suponiendo que la aplicación use Thread Pool existe un comportamiento bien documentado - "si la aplicación pone en cola tareas para el grupo de subprocesos más rápido que un subproceso manejarlo, entonces el grupo de subprocesos creará subprocesos adicionales. "y" Lo bueno de un grupo de subprocesos es que es heurístico. Si su aplicación necesita realizar muchas tareas, el grupo de subprocesos crea más subprocesos ". – sll
Mirando la captura de pantalla solo tiene un hilo de aplicación activo (excepto el hilo principal) que es morado en el gráfico de línea de tiempo, esto significa que está involucrado en la operación de E/S (está leyendo archivo/red, puerto o similar), todo otros hilos están bloqueados para sincronización. No tengo idea de por qué tienes muchos hilos de trabajo bloqueados, ¿estás creando subprocesos en algún ciclo sincronizado? – sll