Example #1
0
 /// <summary>
 /// 节点队列(支持1读1写同时处理)测试
 /// </summary>
 /// <param name="nodes"></param>
 public readWrite(node[] nodes)
 {
     queue  = new queue <node>(new node());
     values = new subArray <node>(nodes.Length);
     using (task task = new task(thread = 2))
     {
         task.Add(push, nodes);
         task.Add(pop);
     }
     if (values.Count != nodes.Length)
     {
         Console.WriteLine("ERROR");
     }
     else
     {
         int value = 0;
         foreach (node node in values.UnsafeArray)
         {
             if (value != node.Value)
             {
                 Console.WriteLine("ERROR");
                 break;
             }
             node.UnsafeClearQueueNextNode();
             ++value;
         }
     }
 }
Example #2
0
        /// <summary>
        /// 并发测试
        /// </summary>
        /// <param name="thread"></param>
        /// <param name="nodes"></param>
        public concurrent(int thread, node[][] nodes)
        {
            int popThread = thread >> 2;

            queue = new queue <node> .concurrent(new node());

            values = new subArray <node> [popThread];
            using (task task = new task((pushThread = pushEndThread = thread) + (this.popThread = popEndThread = popThread)))
            {
                for (int loop = 0; loop != popThread; ++loop)
                {
                    task.Add(pop);
                }
                for (int loop = 0; loop != thread; ++loop)
                {
                    task.Add(push, nodes[loop]);
                }
            }
            node[] array = values.concat(node => node.ToArray());
            if (array.Length != thread * nodes[0].Length)
            {
                Console.WriteLine("ERROR");
            }
            else
            {
                int value = 0;
                foreach (node node in (array = array.getSort(node => node.Value)))
                {
                    if (value != node.Value)
                    {
                        Console.WriteLine("ERROR");
                        break;
                    }
                    node.UnsafeClearQueueNextNode();
                    ++value;
                }
            }
        }
Example #3
0
        /// <summary>
        /// 并发测试
        /// </summary>
        /// <param name="thread"></param>
        /// <param name="nodes"></param>
        public concurrent(int thread, node[][] nodes)
        {
            pool = new fastCSharp.indexPool <node>();
            using (task task = new task(pushThread = thread))
            {
                for (int loop = 0; loop != thread; ++loop)
                {
                    task.Add(push, nodes[loop]);
                }
            }
            subArray <node> values = pool.GetArray();

            if (values.Count != 0)
            {
                Console.WriteLine("ERROR Count " + values.Count.toString());
            }
            pool.Dispose();
        }