@@ -14,27 +14,27 @@ public class SingletonCache<TKey, TValue>
14
14
15
15
public Handle Acquire ( TKey key )
16
16
{
17
- ReferenceCount lockObjectHolder = this . cache . AddOrUpdate ( key ,
17
+ ReferenceCount refCount = this . cache . AddOrUpdate ( key ,
18
18
( _ ) => new ReferenceCount ( ) ,
19
- ( _ , lockObjectHolder2 ) => lockObjectHolder2 . PlusOneReferenceCountCopy ( ) ) ;
19
+ ( _ , existingRefCount ) => existingRefCount . IncrementCopy ( ) ) ;
20
20
21
- return new Handle ( key , lockObjectHolder . Value , this ) ;
21
+ return new Handle ( key , refCount . Value , this ) ;
22
22
}
23
23
24
24
private void Release ( TKey key )
25
25
{
26
26
while ( true )
27
27
{
28
- ReferenceCount oldLockObjectHolder = this . cache [ key ] ;
29
- ReferenceCount newLockObjectHolder = oldLockObjectHolder . MinusOneReferenceCountCopy ( ) ;
30
- if ( this . cache . TryUpdate ( key , newLockObjectHolder , oldLockObjectHolder ) )
28
+ ReferenceCount oldRefCount = this . cache [ key ] ;
29
+ ReferenceCount newRefCount = oldRefCount . DecrementCopy ( ) ;
30
+ if ( this . cache . TryUpdate ( key , newRefCount , oldRefCount ) )
31
31
{
32
- if ( newLockObjectHolder . Count == 0 )
32
+ if ( newRefCount . Count == 0 )
33
33
{
34
34
// This will remove from dictionary only if key and the value with ReferenceCount (== 0) matches (under a lock)
35
- if ( ( ( IDictionary < TKey , ReferenceCount > ) this . cache ) . Remove ( new KeyValuePair < TKey , ReferenceCount > ( key , newLockObjectHolder ) ) )
35
+ if ( ( ( IDictionary < TKey , ReferenceCount > ) this . cache ) . Remove ( new KeyValuePair < TKey , ReferenceCount > ( key , newRefCount ) ) )
36
36
{
37
- if ( newLockObjectHolder . Value is IDisposable d )
37
+ if ( newRefCount . Value is IDisposable d )
38
38
{
39
39
d . Dispose ( ) ;
40
40
}
@@ -89,12 +89,12 @@ public override bool Equals(object obj)
89
89
return refCount != null && refCount . Value != null && refCount . Value . Equals ( this . value ) && refCount . referenceCount == this . referenceCount ;
90
90
}
91
91
92
- public ReferenceCount PlusOneReferenceCountCopy ( )
92
+ public ReferenceCount IncrementCopy ( )
93
93
{
94
94
return new ReferenceCount ( this . value , this . referenceCount + 1 ) ;
95
95
}
96
96
97
- public ReferenceCount MinusOneReferenceCountCopy ( )
97
+ public ReferenceCount DecrementCopy ( )
98
98
{
99
99
return new ReferenceCount ( this . value , this . referenceCount - 1 ) ;
100
100
}
@@ -104,13 +104,13 @@ public sealed class Handle : IDisposable
104
104
{
105
105
private TKey key ;
106
106
private TValue value ;
107
- private SingletonCache < TKey , TValue > lockObjectCache ;
107
+ private SingletonCache < TKey , TValue > cache ;
108
108
109
- public Handle ( TKey key , TValue lockObject , SingletonCache < TKey , TValue > lockObjectCache )
109
+ public Handle ( TKey key , TValue value , SingletonCache < TKey , TValue > cache )
110
110
{
111
111
this . key = key ;
112
- this . value = lockObject ;
113
- this . lockObjectCache = lockObjectCache ;
112
+ this . value = value ;
113
+ this . cache = cache ;
114
114
}
115
115
116
116
public TValue Value
@@ -123,10 +123,10 @@ public TValue Value
123
123
124
124
public void Dispose ( )
125
125
{
126
- if ( this . lockObjectCache != null )
126
+ if ( this . cache != null )
127
127
{
128
- this . lockObjectCache . Release ( this . key ) ;
129
- this . lockObjectCache = null ;
128
+ this . cache . Release ( this . key ) ;
129
+ this . cache = null ;
130
130
}
131
131
}
132
132
}
0 commit comments