예제 #1
0
        public static float[][] DirectDCTTaskSeparator(float[][] inputArray, int task)
        {
            List <Task <float[][]> > taskList = new List <Task <float[][]> >();
            int i = 0;

            while (inputArray.Length > i)
            {
                float[][] templist = new float[task][];
                for (int ia = 0; ia < task && inputArray.Length - i > ia; ia++)
                {
                    templist[ia] = inputArray[i + ia];
                }
                taskList.Add(Task.Factory.StartNew(() => DCT.DirectDCTAranger(templist)));
                i = i + task;
            }

            Task.WaitAll(taskList.ToArray());
            int count = 0;

            for (int ia = 0; ia + 1 < taskList.Count(); ia++)
            {
                for (int ib = 0; ib < taskList[ia].Result.Length; ib++)
                {
                    inputArray[count * task + ib] = taskList[ia].Result[ib];
                }
                count++;
            }
            return(inputArray);
        }