Лабораторная работа №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;