对于共享资源
ReaderWriterLock旨在实现多线程同时读, 单线程写
即读线程获取共享锁, 写线程获取排他锁
static List<string> list = new List<string>(); //共享资源
static ReaderWriterLock rwl = new ReaderWriterLock();
static void fn()
{
rwl.AcquireReaderLock(2000);
Console.WriteLine(list.Count);
rwl.ReleaseReaderLock();
}
static void fn1()
{
rwl.AcquireWriterLock(2000);
list.Add("ddd");
rwl.ReleaseWriterLock();
}
main:
ThreadStart s1 = new ThreadStart(fn);
new Thread(s1).Start();
ThreadStart s2 = new ThreadStart(fn1);
new Thread(s2).Start();
new Thread(s1).Start();
new Thread(s1).Start();