Hallo,
folgendes Problem.
Ich habe mehrere Threads (Socketserver).
Nun sendet ein Client eine Anfrage und soll Daten von einer Hardwar abfragen. Die Hardware wurde in einer Klasse welche ein Singleton enthaelt initialisiert und der Thread ruft dann das SIngleton auf:
Hardware.getInstance().getmessage(string nachricht);
Nun wartet die getmessage bis daten ankommen, und sendet diese dann zurueck.
Wie kann ich sicherstellen, dass getmessage nciht parallel ein zweites mal aufgerufen wird, sodass unter umstaenden ein Socketclient die Falschen Daten erhaelt?
lg
Andreas
Unsere Website
iPhone Programmierung | Android Programmierung
schau dir mal das "lock" statement an....
siehe auch: [Artikel] Multi-Threaded Programmierung
nja, aber die hardware laeuft ja in keinem thread,...
Unsere Website
iPhone Programmierung | Android Programmierung
Das mit dem Flag mache ich gerade.
Aber bei 3 Clients oder so, hilft das nciht mehr,...da die Reihung nicht mehr gegeben ist.
Ein Beispiel mit Zeiten
10:03 Client 1 sendet Anfrage
10:04 Anfrage Client1 wird an Hardware gesendet
10:05 Client 1 erhaelt Antworten Beginn von Hardware
10:06 Client 2 sendet Anfrage
10:07 Client 1 erhaelt Antworten Ende von Hardware
10:08 Client 3 sendet Anfrage
10:09 Anfrage Client2 wird an Hardware gesendet
10:10 Client 2 erhaelt Antworten Beginn von Hardware
10:11 Client 2 erhaelt Antworten Ende von Hardware
10:12 Anfrage Client3 wird an Hardware gesendet
10:13 Client 1 erhaelt Antworten Beginn von Hardware
10:14 Client 1 erhaelt Antworten Ende von Hardware
Die hardware ist in einem Singleton dass von beiden Threads auch aufgerufen wird, dort ist eben die Methode zum nachrichten erhalten
Unsere Website
iPhone Programmierung | Android Programmierung
aso du meinst,dass ein thread dann laufend abfragt ob er darf?
Unsere Website
iPhone Programmierung | Android Programmierung
Hallo Ploetzi,
nja, aber die hardware laeuft ja in keinem thread,...
völlig irrelevanter Einwand. Es geht darum, dass mehrere Threads nicht gleichzeitig auf die Methode zugreifen. Was die Methode macht, spielt keine Rolle.
aso du meinst,dass ein thread dann laufend abfragt ob er darf?
Nein, meint er nicht.
Die erste Antwort beantwortet deine Frage. Guck dir das in Ruhe an.
herbivore