AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Multithreading führt doppel aus?

Ein Thema von BrianDelphi · begonnen am 29. Mai 2019 · letzter Beitrag vom 29. Mai 2019
Antwort Antwort
BrianDelphi

Registriert seit: 29. Mai 2019
1 Beiträge
 
#1

Multithreading führt doppel aus?

  Alt 29. Mai 2019, 17:38
Delphi-Version: 10.2 Tokyo
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.

Geändert von BrianDelphi (29. Mai 2019 um 17:38 Uhr) Grund: Falsche Delphi version
  Mit Zitat antworten Zitat
peterbelow

Registriert seit: 12. Jan 2019
Ort: Hessen
701 Beiträge
 
Delphi 12 Athens
 
#2

AW: Multithreading führt doppel aus?

  Alt 29. Mai 2019, 19:47
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.
Peter Below
  Mit Zitat antworten Zitat
Antwort Antwort

 

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:19 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