AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Indy 10 TCPServer-Synchronize
Thema durchsuchen
Ansicht
Themen-Optionen

Indy 10 TCPServer-Synchronize

Ein Thema von jbg · begonnen am 25. Aug 2005 · letzter Beitrag vom 18. Jun 2012
Antwort Antwort
jbg

Registriert seit: 12. Jun 2002
3.481 Beiträge
 
Delphi 10.1 Berlin Professional
 
#1

Indy 10 TCPServer-Synchronize

  Alt 25. Aug 2005, 10:20
Wo ist denn der TIdThread geblieben mit dem man bei IdTCPServer im OnExecute Ereignis mit dem Hauptthread-Synchronisieren konnte. Irgendwie finde ich im Moment keine einfache Möglichkeit, wie ich im OnExecute ein Synchronize machen kann. Bei Indy 9 war das noch ganz leicht AThread.Synchronize(methode). Aber bei Indy 10 wird jetzt ein TIdContext übergeben. Und das bietet keinen Zugang zum "Vater"-Thread.
Hat das vielleicht jemand herausgefunden, wie das geht? Oder stelle ich mich heute nur blöd an und die Lösung ist ganz einfach?
  Mit Zitat antworten Zitat
bernhard_LA

Registriert seit: 8. Jun 2009
Ort: Bayern
1.121 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Indy 10 TCPServer-Synchronize

  Alt 18. Jun 2012, 17:07
gab es für dieses alte Thema eigentlich eine Lösung ?
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.004 Beiträge
 
Delphi 2009 Professional
 
#3

AW: Indy 10 TCPServer-Synchronize

  Alt 18. Jun 2012, 17:51
Wo ist denn der TIdThread geblieben mit dem man bei IdTCPServer im OnExecute Ereignis mit dem Hauptthread-Synchronisieren konnte. Irgendwie finde ich im Moment keine einfache Möglichkeit, wie ich im OnExecute ein Synchronize machen kann. Bei Indy 9 war das noch ganz leicht AThread.Synchronize(methode). Aber bei Indy 10 wird jetzt ein TIdContext übergeben. Und das bietet keinen Zugang zum "Vater"-Thread.
Hat das vielleicht jemand herausgefunden, wie das geht? Oder stelle ich mich heute nur blöd an und die Lösung ist ganz einfach?
Was ist der Vater-Thread, der Hauptthread der Anwendung oder der aktuell laufende Thread in dem OnExecute ausgeführt wird?

Falls Hauptthread der Anwendung gemeint ist:

* handelt es sich um eine GUI Anwendung (Server mit Benutzeroberfläche)? Dann könnte man synchronized verwenden (aber wahrscheinlich ist eine threadsichere Queue oder die Verwendung von Events oder IdNotify zur Kommunikation besser, da synchronized nicht mehr funktionieren wird wenn aus der GUI Anwendung eine Konsolen- oder Serviceanwendung gemacht wird)

* andernfalls (Konsolen- oder Serviceanwendung) muss man den Austausch mit dem Hauptthread anders lösen, zum Beispiel kann man Nachrichten in eine threadsichere Queue schreiben die dann aus anderen Threads gelesen wird

Falls der aktuell ausgeführte Thread des OnExecute gemeint ist: es kann mehr als einen geben!

* ab Indy 10 kann es sein, das eine einzige Verbindung zu verschiedenen Zeitpunkten von verschiedenen Threads behandelt wird, zum Beispiel kann der TCPServer das OnConnect der Verbindung von einem anderen Thread aus aufrufen als das erste OnExecute, und das nächste OnExecute wieder von einem anderen Thread. (Verwendung eines Threadpools).

Code:
"The events are still executing in a thread. In Indy 9, each connection was assigned to one thread. In Indy 10 in some cases it is possible that a single connection will be handled at different times by different threads. For example, the OnConnect may be called from on thread, the OnExecute from another, and the OnExecute yet another."
Michael Justin
habarisoft.com

Geändert von mjustin (18. Jun 2012 um 18:14 Uhr)
  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 20: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