PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Multithreading mit 10 Roboter



maetsches
12.03.2007, 13:08
Hallo,

Ich versuche gerade eine Applikation zu realisieren mit der 10 Roboter über TCP/IP gesteuert werden können. Hat jemand eine Idee wie ich es realisieren kann,. dass der Server nicht blockiert so lange ein Roboter einen Befehl ausführt?

Mein Vorschlag ist, dass es einen Serverthread gibt, der Nachrichten empfängt und Flags setzt zu welchem Roboter diese Nachrichten gehören.
Dann gibt es 10 Roboterthreads, die sich die Nachricht abholen und die Flags zurücksetzen. Somit wäre kein Roboter von einem anderen blockiert und die Roboter nur solange wie ein Befehl an die Roboter über Bluetooth geschickt wird.

Ist dies realisierbar oder hat jemand eine bessere Lösung?

Ich verwende Visual C++.

mfg

NumberFive
13.03.2007, 04:38
das haben wir gerade in der mache. Oder zu mindestens kann man es auch da für verwenden. Lesen und melden.

Links in der Fußzeile.

Gruß

ogni42
27.03.2007, 13:25
Einfache Lösung:

drei Threads, zwei Queues:
T0: Hauptapplikation
T1: SendeThread
T2: Empfangsthread
Q1: Sendequeue
Q2: Empfangsqueue

Zum Senden stellt T0 eine Nachricht in Q1. Das geht sehr schnell und T0 kann sofort weiter arbeiten. In der Nachricht ist codiert, für welchen Bot sie bestimmt ist. Plus eine fortlaufende ID um nachher das Ergebnise zuordnen zu können.

Zum Lesen schaut T0 in Q2 nach, ob eine Nachricht vorhanden ist. Wenn ja wird die entnommen und bearbeitet. In der Nachricht codiert ist, von welchem Bot sie stammt. Plus die ID zu welchem Kommando sie gehört.

T1 liest Nachrichten aus Q1 und versendet die an die entsprechenden Bots.

T2 emfängt Nachrichten von den Bots und stellt die in Q2 ein.