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;