예제 #1
0
        public override INode <T[]> Process()
        {
            var inputs = new List <T>();

            if (NodeInputProvider != null)
            {
                NodeInputProvider.Process();
                inputs.AddRange(NodeInputProvider.Output);
            }
            else if (Input != null)
            {
                inputs.Add(Input);
            }

            Output    = new T[1][];
            Output[0] = inputs.ToArray();
            return(this);
        }
예제 #2
0
파일: Node.cs 프로젝트: zavolokas/Grapute
        public override INode <TOutput> Process()
        {
            var inputs = new List <TInput>();

            if (NodeInputProvider != null)
            {
                NodeInputProvider.Process();
                inputs.AddRange(NodeInputProvider.Output);
            }
            else if (Input != null)
            {
                inputs.Add(Input);
            }

            //process inputs and put result to the Output
            var outputs = new List <TOutput>();

            foreach (var input in inputs)
            {
                var output = Process(input);
                outputs.AddRange(output);
            }

            //var outputs = new ConcurrentBag<TOutput>();
            //Parallel.ForEach(Partitioner.Create(0, inputs.Count), range =>
            //{
            //    for (var i = range.Item1; i < range.Item2; i++)
            //    {
            //        var output = Process(inputs[i]);
            //        for (var j = 0; j < output.Length; j++)
            //        {
            //            outputs.Add(output[j]);
            //        }
            //    }
            //});


            Output = outputs.ToArray();
            return(this);
        }