C#多线程编程之使用ReaderWriterLock类实现多用户读与单用户写同步

2019-12-30 11:04:15王旭
  • System.Console.ReadKey();  } 
  • //读数据  static void Read() 
  • {  for (int i = 0; i < 3; i++) 
  • {  try 
  • {  //申请读操作锁,如果在1000ms内未获取读操作锁,则放弃 
  • rwl.AcquireReaderLock(1000);  Console.WriteLine("开始读取数据,theResource = {0}", theResource); 
  • Thread.Sleep(10);  Console.WriteLine("读取数据结束,theResource = {0}", theResource); 
  • //释放读操作锁  rwl.ReleaseReaderLock(); 
  • }  catch (ApplicationException) 
  • {  //获取读操作锁失败的处理 
  • }  } 
  • }  //写数据 
  • static void Write()  { 
  • for (int i = 0; i < 3; i++)  { 
  • try  { 
  • //申请写操作锁,如果在1000ms内未获取写操作锁,则放弃  rwl.AcquireWriterLock(1000); 
  • Console.WriteLine("开始写数据,theResource = {0}", theResource);  //将theResource加1 
  • theResource++;  Thread.Sleep(100); 
  • Console.WriteLine("写数据结束,theResource = {0}", theResource);  //释放写操作锁 
  • rwl.ReleaseWriterLock();  } 
  • catch (ApplicationException)  { 
  • //获取写操作锁失败  } 
  • }  } 
  • }  }