Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections;
- using System.Threading;
- namespace Recetas.CSharp.R0414
- {
- public sealed class lockColecciones
- {
- // Instancia `Object` para el bloqueo concurrente:
- private static Object objBloqueante = new Object();
- // Lista contenedora de cadenas:
- private static ArrayList listaCadenas = new ArrayList();
- // Contador acceso lista:
- private static int contadorAcceso = 0;
- public static void Main()
- {
- Console.Title = "Demostración Acceso Concurrente en Colecciones";
- Console.WriteLine ();
- // Agregación de cadenas al objeto `listaCadenas`:
- listaCadenas.Add ("Experiencias");
- listaCadenas.Add ("Construcción");
- listaCadenas.Add ("Software");
- listaCadenas.Add ("xCSw");
- // Crea 10 instancias de `Thread` para acceder y leer el contenido del
- // objeto ArrayList:
- for (int i = 1; i <= 10; ++i)
- {
- Thread t = new Thread( AccederLista );
- t.Name = String.Format ("Thread-{0}", i.ToString());
- t.Start();
- }
- }
- public static void AccederLista()
- {
- lock (objBloqueante)
- {
- Console.WriteLine ("El thread `{0}` accedió al elemento `{1}`.",
- Thread.CurrentThread.Name,
- listaCadenas[contadorAcceso%4]
- );
- Thread.Sleep (1000);
- ++contadorAcceso;
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement