Example #1
0
        public int AddData(T data)
        {
            int index;

            using (_lock.EnterAndReturnLock())
                index = _cache.Cache(new DataContainer(data, _storageIndex++));
            return(index);
        }
Example #2
0
 public T Get(ICacheKey key)
 {
     using (_lock.EnterAndReturnLock())
     {
         var cachedData = _objectList[key.Index];
         if (cachedData.Item2 > key.Version)
         {
             throw new Exception("in CacheManager.Get: too old version number");
         }
         return(_objectList[key.Index].Item1);
     }
 }
Example #3
0
 private static void InnerTest(ILock mySpinLock)
 {
     ThreadPool.QueueUserWorkItem(
         o =>
     {
         int copy1, copy2;
         using (mySpinLock.EnterAndReturnLock())
         {
             copy1 = _spinLockTest1Counter;
             _spinLockTest1Counter++;
             copy2 = _spinLockTest1Counter;
         }
         Assert.IsTrue(copy1 + 1 == copy2);
     }
         );
 }
Example #4
0
        private static void InnerTest(ILock mySpinLock)
        {
            ThreadPool.QueueUserWorkItem(
                o =>
                    {
                        int copy1, copy2;
                        using (mySpinLock.EnterAndReturnLock())
                        {
                            copy1 = _spinLockTest1Counter;
                            _spinLockTest1Counter++;
                            copy2 = _spinLockTest1Counter;

                        }
                        Assert.IsTrue(copy1 + 1 == copy2);
                    }
            );
        }