using System; using System.Threading; namespace Recetas.CSharp.Cap04.R0411 { public sealed class UsoExchange { // Valor de dato compartido entre threads: private static int variable = 0; public static void Main() { // Creación de un thread: Thread t = new Thread(Asignar); // Inicio de la ejecución del thread: t.Start(); // Espera su finalización: t.Join(); // Muestra el valor final de `variable`: Console.WriteLine ("\nValor de `variable`: {0}\n", variable.ToString()); } private static void Asignar() { // Asigna 10 a `variable`: Interlocked.Exchange(ref variable, 10); // Uso de `Interlocked.CompareExchange`: Int32 resultado = Interlocked.CompareExchange(ref variable, 20, 10); // Muestra en pantalla el valor asignado: Console.WriteLine ("\nEl valor de `resultado`: {0}", resultado.ToString()); } } }