示例#1
0
        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);
        }
示例#3
0
        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
        }
示例#4
0
        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
        }
示例#5
0
 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;
 }