Einzelnen Beitrag anzeigen

Kostas

Registriert seit: 14. Mai 2003
Ort: Gerstrhofen
1.095 Beiträge
 
Delphi 10 Seattle Enterprise
 
#1

Parameter einem AnonymousThread übergeben.

  Alt 12. Jul 2019, 17:24
Delphi-Version: 10.2 Tokyo
Hallo Zusammen,

ich teste gerade eine Methode die ThreadSave Logfiles erzeugt.
Zum testen lasse ich 500 AnonymousThread laufen die in die selbe Datei schreiben.
Das funktioniert auch einwandfrei. Jetzt wollte ich in der Datei den Zähler 0..500 hineinschreiben.

Es werden genau 500 Zeilen geschrieben. Mir ist klar, die Threads werden sofort gestartet und das OS entscheidet wann genau ein Thread Startet.
Wenn mann sich das Ergebnis unten anschaut, ist zu sehen, der erste Thread der in das File schreibt, ist schon bei i=3 es wurde also schon mindestens vier Threads erzeugt. Der nächste Thread ist schon bei i=23. Nebenbei bemerkt noch: Es sind mehrere Einträge mit den gleichen i Wert von unterschiedlichen Treads. Die Zahl nach dem Zeitstempel ist die ThreadID und dann kommt der Zähler. Warum der Zähler so ist ist schon klar. Die Threads können erst auf die Variable i zugreifen wenn sie vom OS gestartet werden. In der Zeit wurden weitere Threads erzeugt.

Ich brauche das jetzt nicht wirklich, dennoch würde mich interessieren wie man dem Thread über Parameter den aktuellen Wert der Zählvariable i übergeben kann?

Gruß Kostas

Delphi-Quellcode:
  for i := 0 to 500 do
  begin
    TThread.CreateAnonymousThread(
      procedure
      var FileName:String;

      begin
        FileName := ChangeFileExt(Application.ExeName,'.log');
        FThreadFileLog.Log(IntToStr(i));
      end
    ).Start;
  end;

12.07.2019 17:05:50.387 00007412 3
12.07.2019 17:05:50.428 00008640 23
12.07.2019 17:05:50.461 00006440 28
12.07.2019 17:05:50.514 00007872 32
12.07.2019 17:05:50.529 00002004 32
12.07.2019 17:05:50.584 00008984 40
12.07.2019 17:05:50.598 00002176 40
12.07.2019 17:05:50.630 00001412 41
12.07.2019 17:05:50.666 00007772 41
12.07.2019 17:05:50.698 00000236 41
12.07.2019 17:05:50.730 00007080 41
12.07.2019 17:05:50.762 00001080 41
12.07.2019 17:05:50.795 00003192 47
12.07.2019 17:05:50.827 00005412 48
12.07.2019 17:05:50.880 00007472 56
12.07.2019 17:05:50.894 00009120 56
12.07.2019 17:05:50.925 00001996 56
12.07.2019 17:05:50.957 00004616 56
12.07.2019 17:05:50.989 00004472 56
12.07.2019 17:05:51.021 00008248 56
12.07.2019 17:05:51.052 00005932 57
  Mit Zitat antworten Zitat