Einzelnen Beitrag anzeigen

Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.475 Beiträge
 
Delphi 12 Athens
 
#8

AW: Tcp-Server bedient mehrere Clients; Organisation die Abarbeitung nicht gesichert

  Alt 27. Jul 2010, 09:49
Über AContext.Bindigs.Peerip stelle ich fest, wer gerade ne Anfrage stellt. Kommt ne neue rein der verwirft er die IP und fängt mit der neuen Ip von vorn an.
Jeder Client (genauer: jede Connection) bekommt einen separaten Context. Es ist also durchaus möglich, daß Execute mit verschiedenen Instanzen von AContext parallel (in separaten Threads) aufgerufen wird. Das heißt aber nicht, daß die Execute-Methoden nicht alle auch abgearbeitet werden.

Wie schon gesagt, muss man sich dieses Sachverhalts nur gewahr sein und Execute eben threadsicher programmieren.

Zur Kontrolle könntest du ja mal am Anfang und am Ende von Execute entsprechende Log-Meldungen ausgeben - mit einem threadsicheren Logger natürlich.

Oder die Poor-Programmer Lösung: InterlockedIncrement/Decrement auf eine globale (mit 0 initialisierte) Variable und am Ende schauen, ob die wieder 0 ist.
Uwe Raabe
  Mit Zitat antworten Zitat