AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi threadvars aus anderen Threads auslesen
Thema durchsuchen
Ansicht
Themen-Optionen

threadvars aus anderen Threads auslesen

Ein Thema von SubData · begonnen am 21. Aug 2007 · letzter Beitrag vom 22. Aug 2007
Antwort Antwort
Benutzerbild von SubData
SubData

Registriert seit: 14. Sep 2004
Ort: Stuhr
1.078 Beiträge
 
Delphi 11 Alexandria
 
#1

threadvars aus anderen Threads auslesen

  Alt 21. Aug 2007, 09:14
Moin.

Ich bin auf der Suche nach einer Möglichkeit an die mit threadvar global deklarierten Variablen aus fremden Threads zuzugreifen.
Die Threads laufen asyncron und werden über die Indy Komponenten gesteuert. Zugriff auf die Threads hab ich soweit nur über die ThreadList der Indys. Den Zugriff auf die einzelnen Variablen brauche ich über den Hauptthread.

Jemand ne Idee?

Achja: Das Ganze ist ein HTTP Gerüst, ich kann daher nicht beigehen und in jedem Thread die Variablen irgendwohin dumpen oder in einen globalen Container schieben. Es müsste also schon ein direkter Zugriff auf die Variablen sein ohne diese in jedem Thread ständig zwischenzuspeichern.
Ronny
/(bb|[^b]{2})/
  Mit Zitat antworten Zitat
OlafSt

Registriert seit: 2. Mär 2007
Ort: Hamburg
284 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#2

Re: threadvars aus anderen Threads auslesen

  Alt 21. Aug 2007, 13:23
Das ist wider die Idee von threadvars... Die sollen global innerhalb eines Threads, aber unsichtbar in allen anderen Threads sein.

Dir bleibt also nichts anderes übrig, als keine threadvars zu verwenden - oder das, was dich interessiert, per property o.ä. zugreifbar zu machen. Das sowas in Threads zu bösen und vor allem extrem schwer auffindbaren Fehlern führen kann, muß ich nicht gesondert erwähnen, oder...
  Mit Zitat antworten Zitat
Benutzerbild von SubData
SubData

Registriert seit: 14. Sep 2004
Ort: Stuhr
1.078 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: threadvars aus anderen Threads auslesen

  Alt 21. Aug 2007, 13:30
Es geht hier um einen HTTP Server, der pro Request sinnigerweise einen neuen Thread erstellt.
Da ich nun aber keine Lust habe jedesmal die Request und Response Parameter durch sämtliche Klassen / Prozeduren durchzuschleifen werden alle wirklich wichtigen Informationen (HTTP-Session etc) in ThreadVars ausgelagert.

Selbst wenn ich es über Propertys machen wollen würde... Wie komm ich dann an die Propertys der einzelnen Threads?
Ronny
/(bb|[^b]{2})/
  Mit Zitat antworten Zitat
OlafSt

Registriert seit: 2. Mär 2007
Ort: Hamburg
284 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#4

Re: threadvars aus anderen Threads auslesen

  Alt 21. Aug 2007, 13:44
Zitat:
Zugriff auf die Threads hab ich soweit nur über die ThreadList der Indys.
Damit kommst du an die Threads heran - und somit auch an die properties (oder wie auch immer du das letztlich lösen willst). Dir ist sicher bekannt, das man dem Indy-HTTP-Server sagen kann, welche ART von Thread er erstellen soll...
  Mit Zitat antworten Zitat
Benutzerbild von SubData
SubData

Registriert seit: 14. Sep 2004
Ort: Stuhr
1.078 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: threadvars aus anderen Threads auslesen

  Alt 21. Aug 2007, 14:15
Was meinst du mit "welche Art" ?

Ich komm damit zwar an die Threads aber nicht an irgendwelche Instanzen der Klassen in den Threads.

Änderungen an den Indy Quellcodes sind ausgeschlossen.
Ronny
/(bb|[^b]{2})/
  Mit Zitat antworten Zitat
OlafSt

Registriert seit: 2. Mär 2007
Ort: Hamburg
284 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#6

Re: threadvars aus anderen Threads auslesen

  Alt 21. Aug 2007, 14:58
Also kaue ich das ganze vor...

TIdHTTPServer verwendet Threads, um die Connections zu verwalten. Diese sind vom Typ TIdThread.

Niemand hält dich davon ab, von TIdThread eine neue Klasse abzuleiten und darin all die Properties zu verewigen, die du brauchst.

Nun kann man dem TIdHTTPServer in seinem property ThreadClass mitgeben, welche Sorte von TIdThreads er verwenden soll. Da gibts du ihm einfach mit, das er zukünftig DEINE Thread-Klasse benutzen soll.

Und siehe da - du kommst an die Liste der laufenden Threads ran, du weißt, was für Klassen sich dahinter verbergen (nämliche deine Thread-Klasse, kannst es also notfalls auch typecasten) und hast dann Zugriff auf deine gesuchten Infos.

Fertig ist der Lack.

Kleine Einschränkung: Funktioniert nur mit Indy 9. Bei Indy 10 habe ich solche Verrenkungen noch nicht versucht, aber TIdContext wäre eine Anlaufstelle für die OH.

Olaf
  Mit Zitat antworten Zitat
Benutzerbild von SubData
SubData

Registriert seit: 14. Sep 2004
Ort: Stuhr
1.078 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: threadvars aus anderen Threads auslesen

  Alt 22. Aug 2007, 08:35
Mir bleibt wohl nichts anderes übrig, als auf die Art und Weise zu arbeiten, auch wenn ich lieber direkt an die ThreadVars möchte.

Meinetwegen auch mit dreckigen Tricks
Ronny
/(bb|[^b]{2})/
  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 05:53 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