Advertisement
Fhernd

UsoBarrier.cs

Jul 11th, 2015
278
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.61 KB | None | 0 0
  1. // OrtizOL - xCSw - http://ortizol.blogspot.com
  2.  
  3. using System;
  4. using System.Threading;
  5. using System.Threading.Tasks;
  6.  
  7. namespace Receta.Multithreading.R0207
  8. {
  9.     public class UsoBarrier
  10.     {
  11.         public static void Main()
  12.         {
  13.             Console.WriteLine(Environment.NewLine);
  14.            
  15.             // Creación de objeto `Barrier` para la sincronziación de 3 threads:
  16.             Barrier barrier = new Barrier(3, (x) => { Console.WriteLine("Punto de reunion de threads alcanzado."); });
  17.            
  18.             // Creación de objetos `Task` para asociar tareas de ejecución sobre el objeto
  19.             // `Barrier`:
  20.             Task t1 = Task.Factory.StartNew(() => Proceso(barrier, "Thread 1"));
  21.             Task t2 = Task.Factory.StartNew(() => Proceso(barrier, "Thread 2"));
  22.             Task t3 = Task.Factory.StartNew(() => Proceso(barrier, "Thread 3"));
  23.            
  24.             // A espera de que todas las tareas finalicen antes de
  25.             // que el thread `Main` finalice:
  26.             Task.WaitAll(t1, t2, t3);
  27.            
  28.             Console.WriteLine(Environment.NewLine);
  29.         }
  30.        
  31.         public static void Proceso(Barrier barrier, string nombreThread)
  32.         {
  33.             for (int i = 1; i <= 3; ++i)
  34.             {
  35.                 Console.WriteLine("{0} ANTES de la espera.", nombreThread);
  36.                
  37.                 // Señal de registro una vez todos los threads finalicen:
  38.                 barrier.SignalAndWait();
  39.                
  40.                 Console.WriteLine("{0} DESPUÉS de la espera.", nombreThread);
  41.             }
  42.         }
  43.     }
  44. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement