⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 nodepool!1.cs

📁 破解的飞信源代码
💻 CS
字号:
namespace NCindy.DataStructures
{
    using NCindy.Threading;
    using System;

    public class NodePool<T> : NodeManager<T>
    {
        private LockFreeNode<T> m_head;

        public NodePool()
        {
            this.m_head = new LockFreeNode<T>();
        }

        public override LockFreeNode<T> Allocate(T item)
        {
            LockFreeNode<T> @if;
            do
            {
                @if = this.m_head.Next;
                if (@if == null)
                {
                    return new LockFreeNode<T>(item);
                }
            }
            while (!InterlockedEx.IfThen<LockFreeNode<T>>(ref this.m_head.Next, @if, @if.Next));
            @if.Item = item;
            return @if;
        }

        public override void Free(LockFreeNode<T> node)
        {
            node.Item = default(T);
            do
            {
                node.Next = this.m_head.Next;
            }
            while (!InterlockedEx.IfThen<LockFreeNode<T>>(ref this.m_head.Next, node.Next, node));
        }
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -