Browse Source

* more complex thread testing

peter 23 years ago
parent
commit
5828635603
2 changed files with 41 additions and 26 deletions
  1. 0 26
      tests/test/tmt1.pas
  2. 41 0
      tests/test/tmt1.pp

+ 0 - 26
tests/test/tmt1.pas

@@ -1,26 +0,0 @@
-{ %version=1.1 }
-
-const
-   threadcount = 100;
-   finished : longint = 0;
-
-function f(p : pointer) : longint;
-  var
-     s : ansistring;
-     i : longint;
-  begin
-     for i:=1 to 1000000 div threadcount do
-       s:=s+'1';
-     inc(finished);
-  end;
-
-var
-   i : longint;
-
-begin
-   for i:=1 to threadcount do
-     BeginThread(@f);
-   while finished<threadcount do
-     ;
-   writeln(finished);
-end.

+ 41 - 0
tests/test/tmt1.pp

@@ -0,0 +1,41 @@
+{ %version=1.1 }
+
+{$mode objfpc}
+{$threading on}
+
+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');
+     inc(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.