- •Сообщения
- •Сообщения, определяемые пользователем
- •Реализация модели на основе функций api Windows
- •Отчет по лабораторной работе
- •Пример выполнения лабораторной работы №3 Функции Win 32ip, реализуемые в программе
- •Организация синхронизации действий процессов
- •Модуль process_unit.Pas:
- •Модуль curtime_unit.Pas:
- •Модуль a0wait_unit.Pas:
- •Модуль a1wait_unit.Pas:
- •Модуль herd_unit.Pas:
- •Модуль myProcedure_unit.Pas:
- •Листинг выполнения модели
Модуль process_unit.Pas:
unit process_unit;
interface
type
processRec = record
no : integer; // номер процесса
a1waitI : integer; // параметр для a1wait
a0waitI : integer; // параметр для a0wait
end;
implementation
end.
************************************************************************
Модуль curtime_unit.Pas:
(*************************************************)
(* Получение символьного представления *)
(* текущего времени *)
(*************************************************)
unit curtime_unit;
interface
uses sysutils;
function curtime:string;
implementation
function curtime:string;
begin
result:=timetostr(time);
end;
initialization
longtimeformat:='h:mm:ss.zzz'
end.
************************************************************************
Модуль a0wait_unit.Pas:
(******************************************************)
(* Ожидане *)
(******************************************************)
unit a0wait_unit;
interface
uses
windows;
var
waitFactor:longword;
iGl:integer;
procedure a0wait(I:Integer); // Объявление процедуры
implementation
procedure a0wait(I:Integer); // Реализация процедуры
begin
waitFactor:=gettickcount;
iGl:=i;
sleep(i);
end;
end.
************************************************************************
Модуль a1wait_unit.Pas:
(*************************************************)
(* Ожидание с фиксированным интервалом, *)
(* время которого определяется *)
(* случайным числом в заданном интервале *)
(*************************************************)
unit a1wait_unit;
interface
uses a0wait_unit;
procedure a1wait(I:Integer);
implementation
procedure a1wait(I:Integer);
var
r:integer;
begin
randomize;
r:=random(I);
a0wait(r);
end;
end.
************************************************************************
Модуль herd_unit.Pas:
unit herd_unit;
interface
uses process_unit;
const
NE=15;
var
EE : array [1..NE] of processRec =
((no: 01; a1waitI: 1300; a0waitI: 2300),
(no: 02; a1waitI: 1250; a0waitI: 1250),
(no: 03; a1waitI: 1500; a0waitI: 0500),
(no: 04; a1waitI: 2120; a0waitI: 1120),
(no: 05; a1waitI: 1310; a0waitI: 0250),
(no: 06; a1waitI: 2050; a0waitI: 2600),
(no: 07; a1waitI: 1150; a0waitI: 0169),
(no: 08; a1waitI: 1240; a0waitI: 1269),
(no: 09; a1waitI: 1400; a0waitI: 1369),
(no: 10; a1waitI: 2120; a0waitI: 1069),
(no: 11; a1waitI: 3210; a0waitI: 0169),
(no: 12; a1waitI: 4150; a0waitI: 1269),
(no: 13; a1waitI: 1110; a0waitI: 3369),
(no: 14; a1waitI: 2400; a0waitI: 0069),
(no: 15; a1waitI: 1300; a0waitI: 0130));
implementation
end.