c# 读写锁
发布人:shili8
发布时间:2024-01-23 05:58
阅读次数:83
读写锁(ReadWriteLock)是一种用于多线程编程的同步机制,它允许多个线程同时读取共享资源,但只允许一个线程写入共享资源。在C#中,可以使用System.Threading命名空间中的ReaderWriterLockSlim类来实现读写锁。
下面是一个简单的示例,演示了如何在C#中使用读写锁:
csharpusing System; using System.Threading; class Program{ static ReaderWriterLockSlim rwl = new ReaderWriterLockSlim(); static int resource =0; static void Main() { // 创建多个读取线程 for (int i =0; i <5; i++) { Thread t = new Thread(new ThreadStart(Read)); t.Start(); } // 创建一个写入线程 Thread t2 = new Thread(new ThreadStart(Write)); t2.Start(); } static void Read() { // 获取读取锁 rwl.EnterReadLock(); try { //读取共享资源 Console.WriteLine("Reading resource: " + resource); } finally { //释放读取锁 rwl.ExitReadLock(); } } static void Write() { // 获取写入锁 rwl.EnterWriteLock(); try { // 写入共享资源 resource = new Random().Next(100); Console.WriteLine("Writing resource: " + resource); } finally { //释放写入锁 rwl.ExitWriteLock(); } } }
在上面的示例中,我们创建了一个ReaderWriterLockSlim实例rwl,并使用EnterReadLock和ExitReadLock方法来获取和释放读取锁,使用EnterWriteLock和ExitWriteLock方法来获取和释放写入锁。我们创建了多个读取线程和一个写入线程来演示读写锁的使用。
读写锁是一种非常有用的同步机制,它可以提高多线程程序的性能和并发性。在实际开发中,我们可以使用读写锁来保护共享资源,以实现多个线程同时读取共享资源,但只允许一个线程写入共享资源的需求。