AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Komisches Phänomen bei Threads. var array of meinthread.
Thema durchsuchen
Ansicht
Themen-Optionen

Komisches Phänomen bei Threads. var array of meinthread.

Ein Thema von Jackie1983 · begonnen am 12. Mär 2010 · letzter Beitrag vom 12. Mär 2010
 
Jackie1983

Registriert seit: 12. Mär 2007
486 Beiträge
 
#1

Komisches Phänomen bei Threads. var array of meinthread.

  Alt 12. Mär 2010, 13:46
Servus,

das ganze ist ein wenig schwer zu beschreiben, aber ich versuche es mal.
Also ich habe einen Hauptthread. Threadmain. Der erstellt und verwaltet x Threads. ThreadSub.
Threadmain und Threadsub laufen in einer while bis sie beendet werden.

Threadsub erstellt noch y Threads, ThreadJob. ThreadJob wird aber beendet wenn er seine Arbeit erledigt hat.

Es werden ca. 5-10 ThreadSub erstellt je nach CPU Core.
ThreadJob, werden nur 2-4 erstellt, je nach CPU Core.

Jetzt kommt es zum Problem.
So erstell ich aus dem Threadmain die Threadsubs
Delphi-Quellcode:
  //Erstellen
  SetLength(fThreadSub, 8);
  for i:=0 to Length(fThreadSub) do
    fThreadSub[i] := TThreadSub.Create;

  //.....

  //Freigeben
  for i:=0 to Length(fThreadSub) do
  begin
    fThreadSub[i].Terminate;
    FreeAndNil(fThreadSub[i]);
  end;
Wenn ich 8 Threads erstelle, ohne Probleme, kein Fehler.
Wenn ich 7 Threads erstelle, kommt beim beenden eine EAccessViolation
Wenn ich 6 Threads erstelle, ohne Probleme, kein Fehler.
Schon komisch

Erstelle ich das ganze per Var und stecke das Object in einer liste, klappt auch alles, auch bei 7 Threads
Delphi-Quellcode:
  
  for i:=0 to 8 do begin
    fThreadSub := TThreadSub.Create;
    fThreadSub.MaxThreads := 2;
    fThreadSubList.Add(fThreadSub);
  end;

  //....

  for i:=fThreadSubList.Count-1 downto 0 do begin
    fThreadSub := TThreadSub(fThreadSubList.Items[i]);
    fThreadSub.Terminate;
    fThreadSubList.Delete(i);
  end;
  FreeAndNil(fThreadSubList);
Um fehler zu vermeiden habe ich den Threads auch nur eine while schleife genommen ohne Variablen und sonst was,
selbst da kam der Fehler. Und bei einem Fehler hat mir FastMM4 nur müll angezeigt. Sachen die ich gar nicht im Projekt verwende.

Hatte schon mal jemand so ein Problem......
Oder habe ich eventuell doch unsauber programmiert?

Mfg
  Mit Zitat antworten Zitat
 


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 13:33 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz