Concurrent computing: Difference between revisions

m
→‎{{header|Pascal}}: must be interlocked inc/decrement tse tse tse
(→‎{{header|Pascal}}: Re-add Pascal entry. My apologies if I messed up the formatting)
m (→‎{{header|Pascal}}: must be interlocked inc/decrement tse tse tse)
Line 1,465:
{$ENDIF}
SysUtils, Classes;
 
type
TRandomThread = class(TThread)
Line 1,479:
MyStrings: array[0..2] of String = ('Enjoy ','Rosetta ','Code ');
var
gblRunThdCnt : NativeIntLongWord = 0;
 
constructor TRandomThread.Create(const aString: string);
begin
Line 1,486:
FreeOnTerminate := True;
FString := aString;
incinterlockedincrement(gblRunThdCnt);
end;
 
procedure TRandomThread.Execute;
var
Line 1,498:
//output of difference in time
Writeln(FString,i:4,GettickCount64-T0 -i:2);
decinterlockeddecrement(gblRunThdCnt);
end;
 
var
lThreadArray: Array[0..9] of THandle;
Line 1,506:
begin
Randomize;
 
gblRunThdCnt := 0;
For i := low(lThreadArray) to High(lThreadArray) do
lThreadArray[i] := TRandomThread.Create(Format('%9s %4d',[myStrings[Random(3)],i])).Handle;
 
while gblRunThdCnt > 0 do
sleep(125);
end.</lang>
 
{{out}}
 
<pre>
Enjoy 4 16 0
Anonymous user