using System;
using System.Threading;
class ReaderWriter{
private static object _lock = new object();
private static int _data = 0;
public static void Reader()
{
while (true)
{
lock (_lock)
{
Console.WriteLine("Reader " + Thread.CurrentThread.Name + " reads " + _data);
Thread.Sleep(1000);
}
}
}
public static void Writer()
{
while (true)
{
lock (_lock)
{
_data++;
Console.WriteLine("Writer " + Thread.CurrentThread.Name + " writes " + _data);
Thread.Sleep(1000);
}
}
}
}
class Program{
static void Main()
{
Thread reader1 = new Thread(ReaderWriter.Reader);
reader1.Name = "1";
Thread reader2 = new Thread(ReaderWriter.Reader);
reader2.Name = "2";
Thread writer1 = new Thread(ReaderWriter.Writer);
writer1.Name = "1";
Thread writer2 = new Thread(ReaderWriter.Writer);
writer2.Name = "2";
reader1.Start();
reader2.Start();
writer1.Start();
writer2.Start();
}
}