广州网站建设公司好吗,wordpress读取新闻,网站 vps,wordpress安装 var返回目录 在System.Threading.Tasks命名空间下#xff0c;使用ReaderWriterLockSlim对象来实现多线程并发时的锁管理#xff0c;它比lock来说#xff0c;性能更好#xff0c;也并合理#xff0c;我们都知道lock可以对代码块进行锁定#xff0c;当多线程共同访问代码时使用ReaderWriterLockSlim对象来实现多线程并发时的锁管理它比lock来说性能更好也并合理我们都知道lock可以对代码块进行锁定当多线程共同访问代码时只能有一个线程去访问它其它线程被阻塞这对于写操作是必须的但对于读操作来说就有些浪费资源了因为我们的读操作应该是共享的多个线程可以现时去读它这就引出了ReaderWriterLockSlim对象用它来实现共享锁和互斥锁 声明一个读写锁 private static ReaderWriterLockSlim rwLock new ReaderWriterLockSlim(); EnterReadLock和ExitReadLock共享锁 当一个线程使用共享锁时其它线程同样了可以访问这个资源共用这个锁对象 rwLock.EnterReadLock();Console.WriteLine(DateTime.Now.ToLongTimeString() 线程{0}读到了数据, Thread.CurrentThread.ManagedThreadId);Thread.Sleep(10000);rwLock.ExitReadLock(); EnterWriteLock和ExitWriteLock互斥锁 当一个线程使用互斥锁时其它线程将被阻塞直到这个线程释放锁ExitWriteLock为止 rwLock.EnterWriteLock();Console.WriteLine(DateTime.Now.ToLongTimeString() 线程{0}写了数据{1}, Thread.CurrentThread.ManagedThreadId, res);Thread.Sleep(10000);rwLock.ExitWriteLock(); 我们在测试时可以模式多个并发的线程去调用同一个加锁的代码然后看一个它们执行的时间即可 //多线程的并行Parallel.Invoke(() {TestReadWrite(1);}, () {TestReadWrite(2);}, () {TestReadWrite(3);}); 执行的结果 我们可以看到共享锁在被访问时几个线程是同时的而互斥锁在使用时则出现了线程之间的等待阻塞 感谢各位的阅读 返回目录