如何使用C#读写锁ReaderWriterLockSlim

2019-12-26 13:08:45于海丽
  • {  //Console.WriteLine("{0} Thread ID {1} writing sth...", DateTime.Now.ToString("hh:mm:ss fff"), Thread.CurrentThread.GetHashCode()); 
  • Thread.Sleep(100);//模拟写入信息  //Console.WriteLine("{0} Thread ID {1} writing end.", DateTime.Now.ToString("hh:mm:ss fff"), Thread.CurrentThread.GetHashCode()); 
  • }  finally 
  • {  rwl.ExitWriteLock(); 
  • }  } 
  • 上述代码,就500个Task,每个Task占用一个线程池线程,其中20个写入线程和480个读取线程,模拟操作。其中读取数据花10ms,写入操作花100ms,分别测试了对于lock方式和ReaderWriterLockSlim方式。可以做一个估算,对于ReaderWriterLockSlim,假设480个线程同时读取,那么消耗10ms,20个写入操作占用2000ms,因此所消耗时间2010ms,而对于普通的lock方式,由于都是独占性的,因此480个读取操作占时间4800ms+20个写入操作2000ms=6800ms。运行结果显示了性能提升明显。

    如何使用C#读写锁ReaderWriterLockSlim

    以上是本文的全部内容,希望对大家熟练应用读写锁ReaderWriterLockSlim有所帮助。