Лаба 1 СРВ

Программа должна через каждые t1=7800 миллисекунд с точностью r1=0n=7 раз запускать процедуру p1=3, после выполнения которой, спустя t2=1800 миллисекунд с точностью r2=40 должна запуститься процедура p2.

t1

t2

r1

r2

n

p1

p2

Служба

4

7800

1800

max

40

7

3

4

МТ

3

var

I, J: Cardinal;

begin

I := 1 + Random(50);J := GetTickCount;

While GetTickCount — J

result := random (5);

end;

4

var

I, J: Cardinal;

begin

I := 1 + Random(60);J := GetTickCount;

While GetTickCount — J

result := random (5);

end;

Var

//описание идентификаторов таймеров

TM1: UINT;

TM2: UINT;

C1: Integer;

Procedure P1

var

I, J: Cardinal;

begin

I := 1 + Random(50);J := GetTickCount;

While GetTickCount — J

result := random (5);

end;

Procedure P2;

var

I, J: Cardinal;

begin

I := 1 + Random(60);J := GetTickCount;

While GetTickCount — J

result := random (5);

end;

Procedure DestroyTimer(Var T_ID : UINT);

Begin

TimeKillEvent(T_ID);

T_ID := 0;

End;

Function BuildTimer(uDelay : UINT; uResolution:UINT; fuEvent : UINT) : UINT;

Begin

Result := TimeSetEvent(uDelay,uResolution,@TimeProc,0,fuEvent);

End;

Procedure TimeProc(uTimerID,uMessage:UINT;dwUser,dw1,dw2:DWORD) stdcall;

Begin

If uTimerID = TM1 Then//сработал таймер с идентификатором TM1

Begin

P1;

C1 := C1-1;

TM2 := BuildTimer(1800,40,TIME_ONESHOT);

End;

If uTimerID = TM2 Then//сработал таймер с идентификатором TM2

Begin

P2;

End;

If C1 = 0 Then DestroyTimer(TM1);

End;

//начало основной программы

Begin

Randomize;

C1:=7;

TM1 := timeSetEvent(7800, 0, @TimeProc, 0, TIME_PERIODIC);

//здесь подразумевается создание окон приложения

End.