AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Frage zu Threads (ObjectList mit Klassen, jede Klasse hat Variablen + ggf. 1 Thread)

Frage zu Threads (ObjectList mit Klassen, jede Klasse hat Variablen + ggf. 1 Thread)

Ein Thema von a.def · begonnen am 14. Apr 2017 · letzter Beitrag vom 15. Apr 2017
Antwort Antwort
Seite 4 von 5   « Erste     234 5   
a.def
(Gast)

n/a Beiträge
 
#31

AW: Frage zu Threads (ObjectList mit Klassen, jede Klasse hat Variablen + ggf. 1 Thre

  Alt 14. Apr 2017, 23:35
Perfekt wäre natürlich eine Lösung wie die deine. Aber da muss ich erstmal gesund (aktuell krank) und ausgeschlafen durchblicken.

Bis später und danke für die Hilfe soweit

So. Edit.

Was ich mit meiner Idee gestern vermeiden wollte, war etwas sowas hier
Delphi-Quellcode:
if aThreadInfo.ThreadList.Items[iThreadID].iMode < 5 then
 bPaused := aThreadInfo.ThreadList.Items[iThreadID].itemX.bThreadSleeping
else
 bPaused := aThreadInfo.ThreadList.Items[iThreadID].itemY.bThreadSleeping;
Wenn bThreadSleeping nun in itemX (ein Thread) und itemY (ein anderer Thread) verfügbar wäre, könne ich an vielen Stellen Code sparen.

Geändert von a.def (15. Apr 2017 um 09:58 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.123 Beiträge
 
Delphi 10.3 Rio
 
#32

AW: Frage zu Threads (ObjectList mit Klassen, jede Klasse hat Variablen + ggf. 1 Thre

  Alt 15. Apr 2017, 11:23
emm ich versuche mich mal an einer Antwort...

lege ich den Thread schlafen (ich prüfe einfach auf while bPause do ...
Sag mir bitte nicht, dass Du im Thread

While Pause do; geschrieben hast...

So etwas macht man so!

Du solltest Dir mal diese Tutorial ansehen...


Interfaces, nein danke
Sag ich nix zu...

Ich könnte das Problem umgehen, indem ich die Thread-Unit in die andere Unit, die den Thread erzeugt, verfrachte aber das will ich ehrlich gesagt nicht.
Ich welcher Unit es steht ist doch egal... Google mal Servicelocator oder Dependency-Injection!

Wenn bThreadSleeping nun in itemX (ein Thread) und itemY (ein anderer Thread) verfügbar wäre, könne ich an vielen Stellen Code sparen.
Wenn ich mal alles andere aus 8 lasse... Warum schickst Du nicht einfach eine Message über den MessageManager? Hierbei ist es egal in welcher Unit oder Ebene etwas steht. Mit einer Message kannst Du auch ein Object versenden (also die Referenz) oder Du versendest eine Callback Routine die der Empfänger aufrufen kann... (Oder ein Interface )

Ich lasse einfach erstmal alles so wie es ist.
Oder so...
  Mit Zitat antworten Zitat
a.def
(Gast)

n/a Beiträge
 
#33

AW: Frage zu Threads (ObjectList mit Klassen, jede Klasse hat Variablen + ggf. 1 Thre

  Alt 15. Apr 2017, 11:29
Zitat:
Sag mir bitte nicht, dass Du im Thread
While Pause do; geschrieben hast...
Doch habe ich. Was ist daran so schlimm?
Ohne das while im Thread kann der Thread doch gar nicht wissen, wie lange er schlafen soll.
Denn ich habe auch Threads wo im Thread selber schnell ausgerechnet wird, wie lange er schlafen soll.
Wie soll das denn sonst gehen?

Zitat:
Warum schickst Du nicht einfach eine Message über den MessageManager?
Wie kann man die denn an einen bestimmten Thread schicken? Ich hab ja mehr als nur einen.
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.123 Beiträge
 
Delphi 10.3 Rio
 
#34

AW: Frage zu Threads (ObjectList mit Klassen, jede Klasse hat Variablen + ggf. 1 Thre

  Alt 15. Apr 2017, 11:34
Zitat:
Sag mir bitte nicht, dass Du im Thread
While Pause do; geschrieben hast...
Doch habe ich. Was ist daran so schlimm?
Ohne das while im Thread kann der Thread doch gar nicht wissen, wie lange er schlafen soll.
Denn ich habe auch Threads wo im Thread selber schnell ausgerechnet wird, wie lange er schlafen soll.
Wie soll das denn sonst gehen?
So!

Wie kann man die denn an einen bestimmten Thread schicken? Ich hab ja mehr als nur einen.
ID mit geben?
  Mit Zitat antworten Zitat
a.def
(Gast)

n/a Beiträge
 
#35

AW: Frage zu Threads (ObjectList mit Klassen, jede Klasse hat Variablen + ggf. 1 Thre

  Alt 15. Apr 2017, 12:51
Das mit dem Event ist ja schön und funktioniert super (auch weniger Code).
Aber ich kann da ja nicht sowas machen...
Delphi-Quellcode:
for i := 0 to iTimeOut do
 begin
  MacheWasMitI;
  PruefeIrgendwasAnderes;
  PruefeNochWas;

  if IrgendwasErfuellt then
   Break;
 end;
Aber grundsätzlich:
warum kein Sleep oder While im Thread?

Geändert von a.def (15. Apr 2017 um 12:57 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.123 Beiträge
 
Delphi 10.3 Rio
 
#36

AW: Frage zu Threads (ObjectList mit Klassen, jede Klasse hat Variablen + ggf. 1 Thre

  Alt 15. Apr 2017, 18:06
Das mit dem Event ist ja schön und funktioniert super (auch weniger Code).
Aber ich kann da ja nicht sowas machen...
Delphi-Quellcode:
for i := 0 to iTimeOut do
 begin
  MacheWasMitI;
  PruefeIrgendwasAnderes;
  PruefeNochWas;

  if IrgendwasErfuellt then
   Break;
 end;
Aber grundsätzlich:
warum kein Sleep oder While im Thread?
Kar geht das man kann den Event prüfen...

Schau dir mal die CPU load an.
  Mit Zitat antworten Zitat
a.def
(Gast)

n/a Beiträge
 
#37

AW: Frage zu Threads (ObjectList mit Klassen, jede Klasse hat Variablen + ggf. 1 Thre

  Alt 15. Apr 2017, 18:09
Zitat:
Schau dir mal die CPU load an.
Aktuell sind vier eigene Threads am laufen, jeder mit einer eigenen Warteschleife, welche irgendwann morgen Mittag ein Ende hat.
CPU-Auslastung: 0%.

Zitat:
Kar geht das man kann den Event prüfen...
Ich habe eben schon gesucht wie das geht aber leider nichts gefunden da ich auch nicht weiß wonach man suchen muss
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.123 Beiträge
 
Delphi 10.3 Rio
 
#38

AW: Frage zu Threads (ObjectList mit Klassen, jede Klasse hat Variablen + ggf. 1 Thre

  Alt 15. Apr 2017, 19:31
Wenn Du mal den richtigen Code zeigst - schau ich mal drüber!
  Mit Zitat antworten Zitat
a.def
(Gast)

n/a Beiträge
 
#39

AW: Frage zu Threads (ObjectList mit Klassen, jede Klasse hat Variablen + ggf. 1 Thre

  Alt 15. Apr 2017, 19:43
Es läuft so ab:

- 1) Thread wird gestartet
- 2) Execute-Methode wird ausgeführt
- 3) es wird ausgerechnet, wie lange geschlafen werden soll. Das Ergebnis steht in iSleep.
- 4) es folgt eine for-Schleife mit immer einem Sleep(1000); drin. Selbstverständlich auch Abbruchbedingungen usw., damit das Programm nicht hängt
- 5) Ist die Schleife vorbei, wird der eigentliche Code ausgeführt

Es geht also nur um Punkt 4. Eine ganz normale For-Schleife.
Klar, ich habe auch andere Threads mit einer While-Schleife, aber denselben Abbruchbedingungen.
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.123 Beiträge
 
Delphi 10.3 Rio
 
#40

AW: Frage zu Threads (ObjectList mit Klassen, jede Klasse hat Variablen + ggf. 1 Thre

  Alt 15. Apr 2017, 20:22
Und warum eine For-Schleife mit N Sleeps?


Anstatt : E_Event.WaitFor(FSleepTime); Kostet ~ 0 CPU Zeit... Und der Thread arbeitet wieder in wenigen Pico-Sekunden bei einem E_Event.SetEvent;

Mavarik
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 06:36 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