3 #define NUNIT_FRAMEWORK
9 using System.Collections.Generic;
11 using System.Threading;
13 namespace NUnit.Compatibility
19 public class ReaderWriterLockSlim
21 private object _lockObject = new object();
26 public void EnterReadLock()
28 Monitor.Enter (_lockObject);
34 public void EnterWriteLock()
36 Monitor.Enter(_lockObject);
42 public void ExitReadLock()
44 Monitor.Exit(_lockObject);
50 public void ExitWriteLock()
52 Monitor.Exit(_lockObject);
61 public static class ReaderWriterLockExtensions
66 /// <param name="rwLock"></param>
67 public static void EnterReadLock(this ReaderWriterLock rwLock)
69 rwLock.AcquireReaderLock(Timeout.Infinite);
75 /// <param name="rwLock"></param>
76 public static void EnterWriteLock(this ReaderWriterLock rwLock)
78 rwLock.AcquireWriterLock(Timeout.Infinite);
84 /// <param name="rwLock"></param>
85 public static void ExitReadLock(this ReaderWriterLock rwLock)
87 rwLock.ReleaseReaderLock();
93 /// <param name="rwLock"></param>
94 public static void ExitWriteLock(this ReaderWriterLock rwLock)
96 rwLock.ReleaseWriterLock();