public object GetLock(CacheKey key) { int controllerId = HashCodeProvider.GetIdentityHashCode(_controller); int keyHash = key.GetHashCode(); int lockKey = 29 * controllerId + keyHash; object lok = _lockMap[lockKey]; if (lok == null) { lok = lockKey; //might as well use the same object _lockMap[lockKey] = lok; } return(lok); }
public object GetLock(CacheKey key) { int identityHashCode = HashCodeProvider.GetIdentityHashCode(this._controller); int hashCode = key.GetHashCode(); int num3 = (0x1d * identityHashCode) + hashCode; object obj2 = _lockMap[num3]; if (obj2 == null) { obj2 = num3; _lockMap[num3] = obj2; } return(obj2); }
public void CacheKeyWithTwoParamsSameHashcode() { CacheKey key1 = new CacheKey(); CacheKey key2 = new CacheKey(); key1.Update("HS1CS001"); key1.Update("HS1D4001"); key2.Update("HS1D4001"); key2.Update("HS1CS001"); #if dotnet2 Assert.Ignore("The .NET 2.0 CLR uses a different algorithm for string hashing than the .NET 1.1 CLR."); #else Assert.AreEqual(key1.GetHashCode(), key2.GetHashCode(), "Expect same hashcode."); Assert.IsFalse(key1.Equals(key2), "Expect not equal"); #endif }
public void CacheKeyWithSameHashcode() { CacheKey key1 = new CacheKey(); CacheKey key2 = new CacheKey(); key1.Update("HS1CS001"); key2.Update("HS1D4001"); /* The string hash algorithm is not an industry standard and is not guaranteed to produce the same behaviour between versions. And in fact it does not. The .NET 2.0 CLR uses a different algorithm for string hashing than the .NET 1.1 CLR. */ #if dotnet2 Assert.Ignore("The .NET 2.0 CLR uses a different algorithm for string hashing than the .NET 1.1 CLR."); #else Assert.AreEqual( key1.GetHashCode(), key2.GetHashCode(), "Expect same hashcode."); Assert.IsFalse( key1.Equals(key2),"Expect not equal"); #endif }
public object GetLock(CacheKey key) { int controllerId = HashCodeProvider.GetIdentityHashCode(_controller); int keyHash = key.GetHashCode(); int lockKey = 29 * controllerId + keyHash; object lok =_lockMap[lockKey]; if (lok == null) { lok = lockKey; //might as well use the same object _lockMap[lockKey] = lok; } return lok; }