home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Power-Programmierung
/
CD1.mdf
/
pascal
/
bp7os2
/
thread.pas
< prev
next >
Wrap
Pascal/Delphi Source File
|
1993-09-30
|
1KB
|
58 lines
Program ThreadTest; {--- 1993 Matthias Withopf / c't ---}
Uses
Crt;
Function DosCreateThread(Proc : Pointer;Var TID : Word;
Stack : Pointer) : Word; Far;
External 'DOSCALLS' Index 145;
Function DosWrite(Handle : Word;Str : PChar;Count : Word;
Var WCount : Word) : Word; Far;
External 'DOSCALLS' Index 138;
Function DosExit(x : Word;ExitCode : Word) : Word; Far;
External 'DOSCALLS' Index 5;
Const
Thread1Terminated : Boolean = False;
{$S-} { Stack-Überprüfung sollte deaktiviert werden. }
Procedure Thread1; Far;
Const
Str = 'Jetzt ist Thread1 aktiv.'^M^J;
Var
w : Word;
Begin
Repeat
DosWrite(1,Str,Length(Str),w);
Delay(700);
If KeyPressed then
Begin
Thread1Terminated := True;
{ Beende nur Thread1, nicht Programm. }
DosExit(0,0);
End;
Until False;
End;
{$S+} { Stack-Überprüfung kann wieder aktiviert werden. }
Const
StackSize = 8192;
Var
Thread1ID : Word;
Stack1 : Pointer;
Begin
GetMem(Stack1,StackSize); { Alloziere Stack für Thread1. }
DosCreateThread(@Thread1, { Zeiger auf Prozedur f. Thread}
Thread1ID,
{ Ende des Stackbereichs als Anfangswert für SS:SP. }
@PChar(Stack1)[StackSize]);
Repeat
WriteLn('Der Hauptprogramm ist aktiv.');
Delay(1100);
Until Thread1Terminated;
FreeMem(Stack1,StackSize); { Gib Stack für Thread1 frei. }
WriteLn('Programm-Ende');
End.