1 // -----------------------------------------------------------------------
\r
2 // Copyright (c) Microsoft Corporation. All rights reserved.
\r
3 // -----------------------------------------------------------------------
\r
5 using System.Collections.Generic;
\r
8 using System.Threading;
\r
10 namespace Microsoft.Internal
\r
12 internal struct ReadLock : IDisposable
\r
14 private readonly Lock _lock;
\r
15 private int _isDisposed;
\r
17 public ReadLock(Lock @lock)
\r
19 this._isDisposed = 0;
\r
21 this._lock.EnterReadLock();
\r
24 public void Dispose()
\r
26 if (Interlocked.CompareExchange(ref this._isDisposed, 1, 0) == 0)
\r
28 this._lock.ExitReadLock();
\r