Created
July 10, 2015 14:05
-
-
Save Fhernd/2c459a9351255ce2de30 to your computer and use it in GitHub Desktop.
Uso de la clase CountdownEvent en C#.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// OrtizOL - xCSw - http://ortizol.blogspot.com | |
using System; | |
using System.Threading; | |
namespace Receta.Multithreading.R0506 | |
{ | |
public class NotificacionMultiplesThreads | |
{ | |
// Instancia de `CountdownEvent` para llevar el control | |
// de conteo de threads que han generado una señal de | |
// registro: | |
public static CountdownEvent contadorFinalizacion = | |
new CountdownEvent(3); | |
public static void Main(string[] args) | |
{ | |
Console.WriteLine(Environment.NewLine); | |
Console.WriteLine("Tres threads a punto de iniciar su ejecución..."); | |
Thread t1 = new Thread(() => EjecutarProceso("Proceso #1", 3)); | |
Thread t2 = new Thread(() => EjecutarProceso("Proceso #2", 5)); | |
Thread t3 = new Thread(() => EjecutarProceso("Proceso #2", 8)); | |
// Inicio de la ejecución de los tres threads: | |
t1.Start(); | |
t2.Start(); | |
t3.Start(); | |
// Bloquea a `Main` mientras que el contador (3) llega | |
// a cero (0): | |
contadorFinalizacion.Wait(); | |
Console.WriteLine("\nLas tres operaciones han finalizado."); | |
// BUENA PRÁCTICA: Liberar los recursos ocupados por el | |
// objeto `CountdownEvent`: | |
contadorFinalizacion.Dispose(); | |
Console.WriteLine(Environment.NewLine); | |
} | |
public static void EjecutarProceso(string nombreProceso, int espera) | |
{ | |
// Simula la ejecución de una tarea larga: | |
Thread.Sleep(TimeSpan.FromSeconds(espera)); | |
Console.WriteLine("Ejecutándose `{0}`.", nombreProceso); | |
// Registro de señal de finalización: | |
contadorFinalizacion.Signal(); | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment