public int AddData(T data) { int index; using (_lock.EnterAndReturnLock()) index = _cache.Cache(new DataContainer(data, _storageIndex++)); return(index); }
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); } }
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); } ); }