fork download
  1. using System;
  2. using System.Threading;
  3.  
  4. namespace Recetas.CSharp.Cap04.R0411
  5. {
  6. public sealed class UsoIncrementDecrement
  7. {
  8. // Valor de dato compartido entre threads:
  9. private static int variable = 0;
  10.  
  11. public static void Main()
  12. {
  13. // Creación de dos threads:
  14. Thread t1 = new Thread(IncrementarDecrementar);
  15. Thread t2 = new Thread(IncrementarDecrementar);
  16.  
  17. // Inicio de la ejecución de los dos threads:
  18. t1.Start();
  19. t2.Start();
  20.  
  21. // Espera su finalización:
  22. t1.Join();
  23. t2.Join();
  24.  
  25. // Muestra el valor final de `variable`:
  26. Console.WriteLine ("\nValor de `variable`: {0}\n", variable.ToString());
  27. }
  28.  
  29. private static void IncrementarDecrementar()
  30. {
  31. // Incrementa y decrementa el valor de `variable`:
  32. Interlocked.Increment(ref variable);
  33. Interlocked.Decrement(ref variable);
  34. Interlocked.Decrement(ref variable);
  35. }
  36. }
  37. }
Success #stdin #stdout 0.03s 35856KB
stdin
Standard input is empty
stdout
Valor de `variable`: -2