public ThreadLocalNode(ThreadInt64PersistentCounter counter)
 {
     Debug.Assert(counter != null);
     _counter = counter;
     _prev    = this;
     _next    = this;
 }
        public void Increment()
        {
            ThreadLocalNode node = _threadLocalNode.Value;

            if (node != null)
            {
                node.Increment();
                return;
            }

            TryCreateNode();
        }
        public object CreateThreadLocalCountObject()
        {
            var node = new ThreadLocalNode(this);

            s_lock.Acquire();
            try
            {
                _nodes.Add(node);
            }
            finally
            {
                s_lock.Release();
            }

            return(node);
        }
Exemplo n.º 4
0
        public object CreateThreadLocalCountObject()
        {
            var node = new ThreadLocalNode(this);

            List <ThreadLocalNodeFinalizationHelper>?nodeFinalizationHelpers = t_nodeFinalizationHelpers ??= new List <ThreadLocalNodeFinalizationHelper>(1);

            nodeFinalizationHelpers.Add(new ThreadLocalNodeFinalizationHelper(node));

            s_lock.Acquire();
            try
            {
                _nodes.Add(node);
            }
            finally
            {
                s_lock.Release();
            }

            return(node);
        }
Exemplo n.º 5
0
 public ThreadLocalNodeFinalizationHelper(ThreadLocalNode node)
 {
     Debug.Assert(node != null);
     _node = node;
 }
 public ThreadInt64PersistentCounter()
 {
     _nodes = new ThreadLocalNode(this);
 }