⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sample52.cs

📁 C#函数手册
💻 CS
字号:
namespace apiBook
{
	using System;
	using System.Threading;
	public class TestClass 
	{
		static int  num = 10;
		static AutoResetEvent autoResetEvent = new AutoResetEvent(false);
		static TestRWL test = new TestRWL();
		public static void Main() 
		{
			for (int i = 0; i <num; i++) 
			{
				ThreadPool.QueueUserWorkItem(new WaitCallback(UpdateInfo), i);
			}
			autoResetEvent.WaitOne();
			Console.WriteLine("所有线程执行完毕。");
			Console.ReadLine();
		}
		static void UpdateInfo(Object obj) 
		{
			int count = (int) obj;
			if ((count % 2) != 0) test.Read(count);
			else test.Write(count);
			if (Interlocked.Decrement(ref num) == 0)
				autoResetEvent.Set();
		}
	}
	class TestRWL 
	{
		ReaderWriterLock testR = new ReaderWriterLock();

		public void Read(int i) 
		{
			testR.AcquireReaderLock(Timeout.Infinite);
			try 
			{
				Console.WriteLine("开始读线程:"+ i);
				Thread.Sleep(100);
				Console.WriteLine("停止读线程:"+ i);
				
			}
			finally 
			{
				testR.ReleaseReaderLock();	
				//使用ReleaseReaderLock方法释放阅读器锁
			}
		}

		public void Write(int i) 
		{
			testR.AcquireWriterLock(Timeout.Infinite);
			//使用AcquireWriterLock方法获取编写器锁
			try 
			{
				Console.WriteLine("开始写线程:"+i);
				Thread.Sleep(200);
				Console.WriteLine("停止写线程:"+i);
			}
			finally 
		
			{
				testR.ReleaseWriterLock();
				//使用ReleaseWriterLock方法释放编写器锁
			}
		}
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -