Queue - C#
Формулировка задачи:
Имеется кусок программы.
Вопрос в том, что означает запись "Queue<CPTask>". Как это понимать ? Если бы между треугольными скобками мы написали "int", то это означало бы, что очередь заполняется интовыми числами, а тут написано название класса, т.е. очередь заполняется экземплярами класса ? Если да, то зачем ?
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApplication17 { class CPTask { static int procCount = 5; //количество процессоров static int[] procs = new int[procCount]; //массив длин задач на процессорах static Queue<CPTask> qs = new Queue<CPTask>(procCount); //массив очередей для каждого процессора static Random rnd = new Random(); public double TimeTask; public int TypeTask; public CPTask(double timeTask, int typeTask) { this.TimeTask = timeTask; this.TypeTask = typeTask; } static double ModelWithCommonMemory(Queue<CPTask> tasks, int processors, int controlTask) { Queue<CPTask> copiesTasks = new Queue<CPTask>(tasks); double[] workingProcessors = new double[processors]; CPTask currentTask = null; double minimalTask = 0; int taskDone = 0; int controlProcessor = 0; double totalTime = 0; double controlTime = 0; while (copiesTasks.Count != 0) { totalTime += minimalTask; for (int i = 0; i < processors; ++i) { if (workingProcessors[i] == 0) { ++taskDone; if (taskDone == controlTask) { controlProcessor = i; } currentTask = copiesTasks.Dequeue(); workingProcessors[i] = currentTask.TimeTask; } else { workingProcessors[i] -= minimalTask; } if (taskDone >= controlTask && i == controlProcessor && workingProcessors[i] == 0) // проеверка на выполнение контрольной { controlTime = totalTime; } } minimalTask = workingProcessors.Min(); if (minimalTask == 0) { double[] temp = new double[processors]; workingProcessors.CopyTo(temp, 0); Array.Sort(temp); for (int j = 0; j < processors; ++j) { if (temp[j] > 0) { minimalTask = temp[j]; break; } } } } return controlTime; } static void Main(string[] args) { Console.WriteLine(ModelWithCommonMemory(qs, 10, 10)); Console.ReadKey(); } } }
Решение задачи: «Queue»
textual
Листинг программы
string str = null;
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д