tmt1.pp 693 B

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. { %version=1.1 }
  2. {$mode objfpc}
  3. {$threading on}
  4. uses sysutils;
  5. const
  6. threadcount = 100;
  7. stringlen = 10000;
  8. var
  9. finished : longint;
  10. threadvar
  11. thri : longint;
  12. function f(p : pointer) : longint;
  13. var
  14. s : ansistring;
  15. begin
  16. writeln('thread ',longint(p),' started');
  17. thri:=0;
  18. while (thri<stringlen) do
  19. begin
  20. s:=s+'1';
  21. inc(thri);
  22. end;
  23. writeln('thread ',longint(p),' finished');
  24. InterLockedIncrement(finished);
  25. f:=0;
  26. end;
  27. var
  28. i : longint;
  29. begin
  30. finished:=0;
  31. for i:=1 to threadcount do
  32. BeginThread({$ifdef fpc}@{$endif}f,pointer(i));
  33. while finished<threadcount do
  34. ;
  35. writeln(finished);
  36. end.