En estos días en que
los equipos de cómputo son cada vez más poderosos, el uso de múltiples threads
para reducir tiempos de procesamiento se hace cada día más común.
Al deportar un
programa Visual Studio nos permite ver que es lo que está haciendo, pero además
existe una herramienta visual, que nos permite ver, que threads se están ejecutando.
¿Cuál es la ventaja de
esto?, cuando hablamos de una aplicación que tenga varios módulos, varias
capas, para dar el mantenimiento adecuado, es necesario saber con qué procesos
nos encontramos trabajando al mismo tiempo.
El ver como se
distribuyen los procesos nos ayuda a identificar errores de seguridad, de programación,
o cuellos de botella.
¿Cómo se hace esto?
Bueno creemos una
pequeña aplicación de consola que ejecute múltiples threads
static void Main(string[] args)
{System.Threading.Thread th1 = new System.Threading.Thread(ProcesoParalelo1);
System.Threading.Thread th2 = new System.Threading.Thread(ProcesoParalelo2);
th1.Start();
th2.Start();
System.Threading.Thread.Sleep(10000);
Console.WriteLine("hola");
Console.ReadLine();
}
static void ProcesoParalelo1()
{while (true)
{
Console.WriteLine("proceso 1");
System.Threading.Thread.Sleep(100);
}
}
static void ProcesoParalelo2()
{
while (true)
{
Console.WriteLine("proceso 2");
System.Threading.Thread.Sleep(1000);
}
}
La aplicación es muy sencilla, únicamente efectúa llamadas a
proceso que toman diferente tiempo en llevarse a cabo pero que se efectúan de
manera simultánea.
Si ejecutamos la consola, observamos lo siguiente:
Bien ahora pongamos un punto de interrupción
Y veamos quienes son los procesos paralelos que tenemos en
nuestra aplicación, para ello iremos a el menú Degug -> Windows ->
Parallel Stacks
Esto nos abre un diagrama, en el que podemos ver cuales
subprocesos se ejecutan de manera simultanea
Analicemos esto:
El diagrama indica lo siguiente:
1.
Tenemos un thread que se ejecuta sobre el
proceso principal
2.
Tenemos un thread en el primer proceso paralelo
3.
Tenemos un thread en el segundo proceso paralelo
Esos 3 threads los esperábamos desde un inicio, ahora ¿Por
qué Visual Studio nos indica que hay 5 threads?.
Bueno coloquemos el cursor sobre el diagrama
para ver que nos indica
Tenemos 2 procesos que corresponden a los threads paralelos,
y uno que corresponde al thread principal, pero aparte tenemos otros 2 .Net
SystemEvents, esta clase es la clase que proporciona el acceso al sistema de
notificaciones de .NET, además hay un segundo thread en ejecución, este es
vsHost.RunParkingWindow, este corresponde a la depuración de Visual Studio.
Saber usar las herramientas quitan dolores de cabeza al implementar
aplicaciones, no solo es codificar hay mucho mas.
No hay comentarios.:
Publicar un comentario