Threadsicherheit von Indy-Komponenten
-
Hi.
Ich schreibe z. Z. ein Programm, mit welchem mehrer Rechner gleichberechtigt Daten austauschen können. Gleichberechtig heißt, jeder Rechner ist sowohl Client als auch Server (TIdTCPServer und TIdTCPClient). Zu diesem Zweck habe ich eine Klasse erstellt welche für jede an der Server-Komponente ankommende Verbindung ein Objekt meiner Klasse TPMFSHost erstellt. In diese Klasse wird die ankommende Server-Verbindung (TIdPeerThread) gespeichert und aus dieser Klasse heraus eine Client-Verbindung zur Gegenstelle hergestellt. Dieser Umstand ist notwendig da alle Rechner gleichberechtigt sein müssen und keiner den Server spielen kann. Über das Server-Objekt wir immer geschrieben und über das Client-Objekt immer gelesen.
Nun zu meinem Problem. Wenn ich nur lese oder nur schreibe läuft alles problemlos. Versuche ich aber beides zusammen bekomme ich bei folgender Zeile
eine Fehlermeldung:msg = tcpClient->ReadLn("", 1000);
Meine Vermutung ist das dieser Aufruf nicht Threadsicher ist und/oder mit dem Schreiben:
AThread->Connection->WriteLn(msg);
kollidert.
Wißt ihr wie man das Problem lösen kann, oder an was es noch liegen könnte?
Wäre für jede Idee dankbar.
Karlo
-
Karlo schrieb:
eine Fehlermeldung
Interessant.
-
Es ist eine Exception der Klasse EAccessViolation aufgetreten.
Zugriffsverletzung bei Adresse 41002124 in Modul BORLNDMM.DLL.
Lesen von Adresse ...