Advertisement
Fhernd

lockColecciones.cs

Sep 10th, 2014
3,226
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.70 KB | None | 0 0
  1. using System;
  2. using System.Collections;
  3. using System.Threading;
  4.  
  5. namespace Recetas.CSharp.R0414
  6. {
  7.     public sealed class lockColecciones
  8.     {
  9.         // Instancia `Object` para el bloqueo concurrente:
  10.         private static Object objBloqueante = new Object();
  11.        
  12.         // Lista contenedora de cadenas:
  13.         private static ArrayList listaCadenas = new ArrayList();
  14.        
  15.         // Contador acceso lista:
  16.         private static int contadorAcceso = 0;
  17.        
  18.         public static void Main()
  19.         {
  20.             Console.Title = "Demostración Acceso Concurrente en Colecciones";
  21.             Console.WriteLine ();
  22.        
  23.             // Agregación de cadenas al objeto `listaCadenas`:
  24.             listaCadenas.Add ("Experiencias");
  25.             listaCadenas.Add ("Construcción");
  26.             listaCadenas.Add ("Software");
  27.             listaCadenas.Add ("xCSw");
  28.            
  29.             // Crea 10 instancias de `Thread` para acceder y leer el contenido del
  30.             // objeto ArrayList:
  31.             for (int i = 1; i <= 10; ++i)
  32.             {
  33.                 Thread t = new Thread( AccederLista );
  34.                 t.Name = String.Format ("Thread-{0}", i.ToString());
  35.                 t.Start();
  36.             }
  37.         }
  38.        
  39.         public static void AccederLista()
  40.         {
  41.             lock (objBloqueante)
  42.             {
  43.                 Console.WriteLine ("El thread `{0}` accedió al elemento `{1}`.",
  44.                     Thread.CurrentThread.Name,
  45.                     listaCadenas[contadorAcceso%4]
  46.                 );
  47.                
  48.                 Thread.Sleep (1000);
  49.                
  50.                 ++contadorAcceso;
  51.             }
  52.         }
  53.     }
  54. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement