lunes, 10 de agosto de 2015

11. Visual Studio Threads



Visual Studio es un IDE de desarrollo muy completo que nos permite efectuar una gran variedad de actividades más allá de la simple codificación de un programa.


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