wasSharp – Diff between revs 44 and 54

Subversion Repositories:
Rev:
Show entire fileIgnore whitespace
Rev 44 Rev 54
Line 9... Line 9...
9 using System.Linq; 9 using System.Linq;
10 using System.Threading; 10 using System.Threading;
Line 11... Line 11...
11   11  
12 namespace wasSharp.Collections.Specialized 12 namespace wasSharp.Collections.Specialized
13 { 13 {
14 public class MultiKeyDictionary<K1, K2, V> : Dictionary<K1, Dictionary<K2, V>> 14 public class ConcurrentMultiKeyDictionary<K1, K2, V> : Dictionary<K1, Dictionary<K2, V>>
15 { 15 {
Line 16... Line 16...
16 private readonly ReaderWriterLockSlim _lock = new ReaderWriterLockSlim(LockRecursionPolicy.SupportsRecursion); 16 private readonly ReaderWriterLockSlim _lock = new ReaderWriterLockSlim(LockRecursionPolicy.SupportsRecursion);
17   17  
Line 131... Line 131...
131 if (_lock.IsReadLockHeld) _lock.ExitReadLock(); 131 if (_lock.IsReadLockHeld) _lock.ExitReadLock();
132 } 132 }
133 } 133 }
134 } 134 }
Line 135... Line 135...
135   135  
136 public class MultiKeyDictionary<K1, K2, K3, V> : Dictionary<K1, MultiKeyDictionary<K2, K3, V>> 136 public class MultiKeyDictionary<K1, K2, K3, V> : Dictionary<K1, ConcurrentMultiKeyDictionary<K2, K3, V>>
137 { 137 {
Line 138... Line 138...
138 private readonly ReaderWriterLockSlim _lock = new ReaderWriterLockSlim(LockRecursionPolicy.SupportsRecursion); 138 private readonly ReaderWriterLockSlim _lock = new ReaderWriterLockSlim(LockRecursionPolicy.SupportsRecursion);
139   139  
Line 155... Line 155...
155 { 155 {
156 _lock.EnterWriteLock(); 156 _lock.EnterWriteLock();
157 try 157 try
158 { 158 {
159 if (!ContainsKey(key1)) 159 if (!ContainsKey(key1))
160 this[key1] = new MultiKeyDictionary<K2, K3, V>(); 160 this[key1] = new ConcurrentMultiKeyDictionary<K2, K3, V>();
Line 161... Line 161...
161   161  
162 this[key1][key2, key3] = value; 162 this[key1][key2, key3] = value;
163 } 163 }
164 finally 164 finally
Line 185... Line 185...
185 { 185 {
186 _lock.EnterWriteLock(); 186 _lock.EnterWriteLock();
187 try 187 try
188 { 188 {
189 if (!ContainsKey(key1)) 189 if (!ContainsKey(key1))
190 this[key1] = new MultiKeyDictionary<K2, K3, V>(); 190 this[key1] = new ConcurrentMultiKeyDictionary<K2, K3, V>();
191 this[key1][key2, key3] = value; 191 this[key1][key2, key3] = value;
192 } 192 }
193 finally 193 finally
194 { 194 {
195 if (_lock.IsWriteLockHeld) _lock.ExitWriteLock(); 195 if (_lock.IsWriteLockHeld) _lock.ExitWriteLock();