home *** CD-ROM | disk | FTP | other *** search
- {$R-,S-,I-,D-,F-,V-,B-,N-,L- }
- Program RscTest;
-
- { Programm zum Testen der Resource-Funktionen
- Christian Philipps Software-Technik
- Stand: 4/90
- }
-
- USES Dos, Crt, CpMulti;
-
- VAR ScreenRsc : Pointer;
-
- {-----------------------------------------------------------------------------}
-
- PROCEDURE Recurse(Txt:String;Depth:Byte);
-
- { Zu Demonstrationszwecken wird die Resource in dieser Prozedur je
- Rekursion ein Mal angefordert. Solange der Eigentümer den wieder-
- holten Aufruf absetzt, führt dies nicht zur Blockade.
- Die Konkurrenz wird jedoch solange ausgeschaltet, bis das
- Ende weiterer Rekursionen erreicht ist, also keine weiteren
- Bildschirmausgaben getätigt werden.
- }
-
- BEGIN {Recurse}
- IF Depth = 0
- THEN BEGIN
- IF ReleaseRsc(ScreenRsc) <> Rsc_Ok
- THEN Writeln('Recurse: Fehler bei ReleaseRsc');
- Exit;
- END;
- IF RequestRsc(ScreenRsc,Wait) <> Rsc_Ok
- THEN Writeln('Recurse: Fehler bei RequestRsc!');
- Writeln(Txt,' Tiefe ',Depth);
- Sleep(1);
- Recurse(Txt,Depth-1);
- END; {Recurse}
-
- {-----------------------------------------------------------------------------}
-
- {$F+}
- PROCEDURE SubTask(P:Pointer);
-
- BEGIN {SubTask}
- Recurse('Sub:',5);
- Recurse('Sub:',5);
- Recurse('Sub:',5);
- END; {SubTask}
- {$F-}
-
- {-----------------------------------------------------------------------------}
-
- BEGIN {Main}
- ClrScr;
- IF CreateRsc(ScreenRsc) <> Rsc_Ok
- THEN BEGIN
- Writeln('Fehler bei CreateRsc');
- Halt(1);
- END;
- IF CreateTask(SubTask,NIL,Pri_User,2000) < 0
- THEN BEGIN
- Writeln('Fehler bei CreateTask');
- Halt(1);
- END;
- Sleep(1);
- Recurse('Main:',5);
- Recurse('Main:',5);
- Recurse('Main:',5);
- END. {Main}