Esempio n. 1
0
 /// <summary>
 /// 将指定的节点添加到链表冷端的头部,链表操作本身是非线程安全的。
 /// </summary>
 /// <param name="node">要添加的节点。</param>
 private void AddCodeFirst(LruNode <TKey, TValue> node)
 {
     Contract.Requires(node != null);
     Contract.Assume(codeHead != null);
     // 这里 codeHead != null,在调用的时候已经保证了这一点。
     codeHead.AddBefore(node);
     codeHead = node;
 }
Esempio n. 2
0
 /// <summary>
 /// 将指定的节点添加到链表热端的头部,链表操作本身是非线程安全的。
 /// </summary>
 /// <param name="node">要添加的节点。</param>
 private void AddHotFirst(LruNode <TKey, TValue> node)
 {
     Contract.Requires(node != null);
     if (head == null)
     {
         node.Next = node.Prev = node;
     }
     else
     {
         head.AddBefore(node);
         // 热端长度增加,将冷端头节点像前移动一个位置。
         if (codeHead != null)
         {
             codeHead = codeHead.Prev;
         }
     }
     head = node;
 }