@@ -9,7 +9,6 @@ namespace NHibernate.Util
9
9
// https://devblogs.microsoft.com/pfxteam/building-async-coordination-primitives-part-7-asyncreaderwriterlock/
10
10
internal class AsyncReaderWriterLock : IDisposable , Cache . ICacheLock
11
11
{
12
- private readonly Lock _writeLockLock = LockFactory . Create ( ) ;
13
12
private readonly SemaphoreSlim _writeLockSemaphore = new SemaphoreSlim ( 1 , 1 ) ;
14
13
private readonly SemaphoreSlim _readLockSemaphore = new SemaphoreSlim ( 0 , 1 ) ;
15
14
private readonly Releaser _writerReleaser ;
@@ -49,7 +48,7 @@ public Releaser WriteLock()
49
48
if ( ! CanEnterWriteLock ( out var waitForReadLocks ) )
50
49
{
51
50
_writeLockSemaphore . Wait ( ) ;
52
- lock ( _writeLockLock )
51
+ lock ( _writeLockSemaphore )
53
52
{
54
53
_writersWaiting -- ;
55
54
}
@@ -75,7 +74,7 @@ public async Task<Releaser> WriteLockAsync()
75
74
if ( ! CanEnterWriteLock ( out var waitForReadLocks ) )
76
75
{
77
76
await _writeLockSemaphore . WaitAsync ( ) . ConfigureAwait ( false ) ;
78
- lock ( _writeLockLock )
77
+ lock ( _writeLockSemaphore )
79
78
{
80
79
_writersWaiting -- ;
81
80
}
@@ -127,7 +126,7 @@ async Task<Releaser> ReadLockInternalAsync()
127
126
128
127
public void Dispose ( )
129
128
{
130
- lock ( _writeLockLock )
129
+ lock ( _writeLockSemaphore )
131
130
{
132
131
_writeLockSemaphore . Dispose ( ) ;
133
132
_readLockSemaphore . Dispose ( ) ;
@@ -140,7 +139,7 @@ public void Dispose()
140
139
private bool CanEnterWriteLock ( out bool waitForReadLocks )
141
140
{
142
141
waitForReadLocks = false ;
143
- lock ( _writeLockLock )
142
+ lock ( _writeLockSemaphore )
144
143
{
145
144
AssertNotDisposed ( ) ;
146
145
if ( _writeLockSemaphore . CurrentCount > 0 && _writeLockSemaphore . Wait ( 0 ) )
@@ -157,7 +156,7 @@ private bool CanEnterWriteLock(out bool waitForReadLocks)
157
156
158
157
private void ExitWriteLock ( )
159
158
{
160
- lock ( _writeLockLock )
159
+ lock ( _writeLockSemaphore )
161
160
{
162
161
AssertNotDisposed ( ) ;
163
162
if ( _writeLockSemaphore . CurrentCount == 1 )
@@ -188,7 +187,7 @@ private void ExitWriteLock()
188
187
189
188
private bool CanEnterReadLock ( out SemaphoreSlim waitingReadLockSemaphore )
190
189
{
191
- lock ( _writeLockLock )
190
+ lock ( _writeLockSemaphore )
192
191
{
193
192
AssertNotDisposed ( ) ;
194
193
if ( _writersWaiting == 0 && _writeLockSemaphore . CurrentCount > 0 )
@@ -213,7 +212,7 @@ private bool CanEnterReadLock(out SemaphoreSlim waitingReadLockSemaphore)
213
212
214
213
private void ExitReadLock ( )
215
214
{
216
- lock ( _writeLockLock )
215
+ lock ( _writeLockSemaphore )
217
216
{
218
217
AssertNotDisposed ( ) ;
219
218
if ( _currentReaders == 0 )
0 commit comments