protected void UpdateStatsBorrow(IPooledObject <T> p, long waitTime) { _borrowedCount++; idleTimes.Add(p.GetIdleTimeMillis()); waitTimes.Add(waitTime); // TODO lock-free optimistic-locking maximum //long currentMax; //do { // currentMax = maxBorrowWaitTimeMillis; // if (currentMax >= waitTime) { // break; // } //} while (!maxBorrowWaitTimeMillis.CompareAndSet(currentMax, waitTime)); }
/// <summary> /// Updates statistics after an object is borrowed from the pool. /// </summary> /// <param name="p"></param> /// <param name="waitTime"></param> private void UpdateStatsBorrow(IPooledObject <T> p, long waitTime) { _borrowedCount++; idleTimes.Add(p.GetIdleTimeMillis()); waitTimes.Add(waitTime); }