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;

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 3.75 из 5
Похожие ответы