private static int sharedValue = 0;
public static void Main()
Thread writerThread = new Thread(() =>
for (int i = 1; i <= 5; i++)
Interlocked.Exchange(ref sharedValue, i);
Console.WriteLine($"Writer Thread: wrote {i}");
Thread readerThread = new Thread(() =>
int currentValue = Volatile.Read(ref sharedValue);
if (currentValue != previousValue)
Console.WriteLine($"Reader Thread: read {currentValue}");
previousValue = currentValue;
if (currentValue == 5) break;
Console.WriteLine("Execution complete.");