Лабораторная работа №4
Пример для freepascal: type TTaskFunc=function (maxtime:longint): boolean of object; // отдельная задача - метод класса, например - TSort TTask=class taskfunc:ttaskfunc; // выполняемая задача priority: byte; // приоритет finished:boolean; // задача завершена или нет constructor Create(_taskfunc:ttaskfunc; _priority: byte); end; type TRoundRobin=class private {внутренние поля и методы} public constructor Create(); function Run(maxtime:longint; fullmaxtime:longint):boolean; // запускает планировшик // maxtime - квант времени, выделяемый на задачу // fullmaxtime - время, выделяемое планировщику, 0 - без ограничений // планировщик завершает свою работу по достижению fullmaxtime или по окончанию работы всех задач // возвращаемое значение равно true, если все задачи завершили свою работу // и false, если остались незавершенные задачи procedure add(task:TTask); // добавляет новую задачу procedure delete(task:TTask); // удаляет задачу property tasks[index:integer]:TTask read getTask; // позволяет получить доступ к задачам по индексу property countTasks:integer read getCountTask; // позволяет получить количество задач property workTasks[index:integer]:TTask read getWorkTask; // позволяет получить доступ к работающим задачам по индексу property countWorkTasks:integer read getCountWorkTask; // позволяет получить количество работающих задач end;