Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // OrtizOL - xCSw - http://ortizol.blogspot.com
- using System;
- using System.Threading;
- namespace Receta.Multithreading.R0208
- {
- public class ModoUsuarioVsModoKernel
- {
- static volatile bool finalizado = false;
- public static void Main()
- {
- Console.WriteLine(Environment.NewLine);
- Thread t1 = new Thread(ModoEsperaUsuario);
- Thread t2 = new Thread(ModoEsperaKernel);
- Console.WriteLine("Modo espera de usuario en ejecución");
- t1.Start();
- Thread.Sleep(20);
- finalizado = true;
- Thread.Sleep(TimeSpan.FromSeconds(2));
- finalizado = false;
- Console.WriteLine("Modo espera de kernel en ejecución");
- t2.Start();
- Thread.Sleep(5);
- finalizado = true;
- Console.WriteLine(Environment.NewLine);
- }
- // Método que simula la espera de usuario:
- public static void ModoEsperaUsuario()
- {
- while (!finalizado)
- {
- Console.Write(".");
- }
- Console.WriteLine();
- Console.WriteLine("La espera de usuario ha finalizado.");
- }
- // Método que simula la espera de kernel con SpinWait:
- public static void ModoEsperaKernel()
- {
- SpinWait sw = new SpinWait();
- while (!finalizado)
- {
- sw.SpinOnce();
- Console.WriteLine(sw.NextSpinWillYield);
- }
- Console.WriteLine("La espera de kernel ha finalizado.");
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement