Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Threading;
- namespace Recetas.CSharp.Cap04.R0407
- {
- public class BlogxCSw
- {
- // Representa el número de threads máximos
- // soportados por el servidor:
- private const int threads = 3;
- // Representa la cantidad de usuarios que
- // se van a conectar al blog:
- private const int usuarios = 20;
- // Representa el locker que se encarga de
- // controlar el acceso al blog:
- private static Object locker = new Object();
- // Permite a un usuario ingresar al usuario:
- public static void IngresarAlBlog()
- {
- while (true)
- {
- lock (locker)
- {
- Monitor.Wait (locker);
- }
- Console.WriteLine ("{0} accedió al Blog xCSw",
- Thread.CurrentThread.Name
- );
- Thread.Sleep (150);
- }
- }
- public static void Main()
- {
- // Creación del pool de threads:
- Thread[] pool = new Thread[threads];
- // Creación de cada uno de los threads:
- for (int i = 0; i < threads; ++i)
- {
- pool[i] = new Thread (new ThreadStart (IngresarAlBlog));
- pool[i].Name = String.Format ("Usuario {0}", (i + 1).ToString() );
- pool[i].IsBackground = true;
- pool[i].Start();
- }
- // Atienda las visitas al blog:
- for (int i = 1; i <= usuarios; ++i)
- {
- Thread.Sleep (1000);
- lock (locker)
- {
- Monitor.Pulse (locker);
- }
- }
- Console.WriteLine ();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement