mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-16 15:20:08 +02:00
49 lines
739 B
ObjectPascal
49 lines
739 B
ObjectPascal
{ %version=1.1 }
|
|
|
|
{$mode objfpc}
|
|
{$threading on}
|
|
|
|
uses
|
|
sysutils
|
|
{$ifdef unix}
|
|
,cthreads
|
|
{$endif}
|
|
;
|
|
|
|
const
|
|
threadcount = 100;
|
|
stringlen = 10000;
|
|
var
|
|
finished : longint;
|
|
threadvar
|
|
thri : longint;
|
|
|
|
function f(p : pointer) : longint;
|
|
var
|
|
s : ansistring;
|
|
begin
|
|
writeln('thread ',longint(p),' started');
|
|
thri:=0;
|
|
while (thri<stringlen) do
|
|
begin
|
|
s:=s+'1';
|
|
inc(thri);
|
|
end;
|
|
writeln('thread ',longint(p),' finished');
|
|
InterLockedIncrement(finished);
|
|
f:=0;
|
|
end;
|
|
|
|
var
|
|
i : longint;
|
|
begin
|
|
finished:=0;
|
|
|
|
for i:=1 to threadcount do
|
|
BeginThread({$ifdef fpc}@{$endif}f,pointer(i));
|
|
|
|
while finished<threadcount do
|
|
;
|
|
writeln(finished);
|
|
end.
|