Example #1
0
        static void Main(string[] args)
        {
            //Instancia e inicializacion de los 3 hilos para contador
            Console.WriteLine("Contador Incorrecto");
            var c  = new Contador();
            var t1 = new Thread(() => Prueba(c));
            var t2 = new Thread(() => Prueba(c));
            var t3 = new Thread(() => Prueba(c));

            t1.Start();
            t2.Start();
            t3.Start();
            t1.Join();
            t2.Join();
            t3.Join();


            //Muestro los resultados obtenidos por el contador
            //lo que mostrara un resultado incorrecto al no estar bloqueado
            Console.WriteLine("Cuenta Total: {0}", c.Contar);
            Console.WriteLine("------");

            Console.WriteLine("Contador correcto");



            //Instancia e inicializacion de los 3 hilos para contadorConBloque
            var c1 = new ContadorConBloqueo();

            var t4 = new Thread(() => Prueba(c1));
            var t5 = new Thread(() => Prueba(c1));
            var t6 = new Thread(() => Prueba(c1));

            t4.Start();
            t5.Start();
            t6.Start();
            t4.Join();
            t5.Join();
            t6.Join();

            //Muestra los resultados esperados para este ejercicio el resiltado
            //correcto seria 0
            Console.WriteLine("Cuenta Total: {0}", c1.Contar);
            Console.WriteLine("------");

            Console.ReadLine();
        }
Example #2
0
        static void Main(string[] args)
        {
            // Creamos una nueva instacia del objeto Contador
            var c = new Contador();
            // Creamos tres hilos con el método Prueba
            // y le pasamos como parámetro el objeto c como referencia
            var t1 = new Thread(() => Prueba(c));
            var t2 = new Thread(() => Prueba(c));
            var t3 = new Thread(() => Prueba(c));

            // Iniciamos los 3 hilos
            // con join se ejecutan los tres hilos antes de que continue el hilo principal

            t1.Start();
            t2.Start();
            t3.Start();
            t1.Join();
            t2.Join();
            t3.Join();

            Console.WriteLine("Cuenta Total: {0}", c.Contar);
            Console.WriteLine("------");
            Console.WriteLine("Contador correcto");

            // Creamos y ejecutamos los hilos de forma similiar al codigo anterior
            // pero en este caso le pasamos como parámetro el objeto con el bloqueo

            var c1 = new ContadorConBloqueo();

            t1 = new Thread(() => Prueba(c1));
            t2 = new Thread(() => Prueba(c1));
            t3 = new Thread(() => Prueba(c1));
            t1.Start();
            t2.Start();
            t3.Start();
            t1.Join();
            t2.Join();
            t3.Join();
            Console.WriteLine("Cuenta Total: {0}", c1.Contar);
            Console.WriteLine("------");
        }
Example #3
0
        static void Main(string[] args)
        {
            //Instancia e inicializacion de los 3 hilos para contar sin bloqueo

            Console.WriteLine("Contador Incorrecto");
            var c  = new Contador();
            var t1 = new Thread(() => Prueba(c));
            var t2 = new Thread(() => Prueba(c));
            var t3 = new Thread(() => Prueba(c));

            t1.Start();
            t2.Start();
            t3.Start();
            t1.Join();
            t2.Join();
            t3.Join();
            Console.WriteLine("Cuenta Total: {0}", c.Contar);
            Console.WriteLine("------");
            Console.WriteLine("Contador correcto");

            //Instancia e inicializacion de los 3 hilos para contador con bloqueo

            var c1 = new ContadorConBloqueo();

            t1 = new Thread(() => Prueba(c1));
            t2 = new Thread(() => Prueba(c1));
            t3 = new Thread(() => Prueba(c1));
            t1.Start();
            t2.Start();
            t3.Start();
            t1.Join();
            t2.Join();
            t3.Join();
            Console.WriteLine("Cuenta Total: {0}", c1.Contar);
            Console.WriteLine("------");

            Console.ReadLine();
        }