Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Multithreading führt doppel aus? (https://www.delphipraxis.net/200829-multithreading-fuehrt-doppel-aus.html)

BrianDelphi 29. Mai 2019 16:38

Delphi-Version: 10.2 Tokyo

Multithreading führt doppel aus?
 
Ich bin relativ neu in Delphi und probiere mich grade an multi threading.

Wieso gibt der Folgende code 2 mal "Test" in der Konsole aus?

Code:

type
  TSelfThread = class(TThread)
    procedure Execute; override;
end;

procedure TSelfThread.Execute;
begin
  Writeln('Test');
end;


var
  SelfThread: TSelfThread;

begin

  try

  SelfThread := TSelfThread.Create(false);

  except
    on E: Exception do
      Writeln('Error');
  end;
end.

peterbelow 29. Mai 2019 18:47

AW: Multithreading führt doppel aus?
 
Zitat:

Zitat von BrianDelphi (Beitrag 1433397)
Ich bin relativ neu in Delphi und probiere mich grade an multi threading.

Wieso gibt der Folgende code 2 mal "Test" in der Konsole aus?

Tut er nicht, jedenfalls in meiner etwas getuneten Testversion:

Delphi-Quellcode:
program RioTestframe_console;

{$APPTYPE CONSOLE}

{$R *.res}

uses
  System.SysUtils, System.Classes;

type
  TSelfThread = class(TThread)
    procedure Execute; override;
end;

procedure TSelfThread.Execute;
begin
  Writeln('Test');
end;


procedure runTest;
var
  SelfThread: TSelfThread;

begin
  SelfThread := TSelfThread.Create(false);
  try
    selfthread.WaitFor;
  finally
    selfthread.free
  end;
end;


begin
  try
    RunTest;
  except
    on E: Exception do
      Writeln(E.ClassName, ': ', E.Message);
  end;
  WriteLn(SLinebreak, 'Hit return to exit');
  ReadLn;
end.
Vermutlich hast Du in deiner Version ein Problem, da Write/Writeln nicht threadsafe ist. Die Ausgabe ist gepuffert und da gibt es wohl in deinem Fall einen konflikt.


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:06 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz