// OrtizOL - xCSw - http://ortizol.blogspot.com
using System;
using System.Threading;
namespace Receta.Multithreading.R0207
{
public class UsoBarrier
{
public static Barrier barrier = new Barrier(2,
b => Console.WriteLine("Fin de la fase: {0}",
b.CurrentPhaseNumber + 1));
public static void Main()
{
Console.WriteLine(Environment.NewLine);
Thread t1 = new Thread(() => Tocar("El guitarrista", "tocar su guitarra.", 5));
Thread t2 = new Thread(() => Tocar("El vocalista", "cantar su canciĆ³n.", 5));
// Inicio de la ejecuciĆ³n de los threads:
t1.Start();
t2.Start();
}
public static void Tocar(String nombre, String mensaje, int espera)
{
for (int i = 1; i < 3; ++i)
{
Console.WriteLine("----------------------------------------------");
// Espera:
Thread.Sleep(TimeSpan.FromSeconds(espera));
Console.WriteLine("{0} empieza a {1}", nombre, mensaje);
// Espera:
Thread.Sleep(TimeSpan.FromSeconds(espera));
Console.WriteLine("{0} finaliza de {1}", nombre, mensaje);
barrier.SignalAndWait();
}
}
}
}