Hallo,
ich habe folgendes Problem:
Für einen Program das mit dem DIS Protokol arbeitet möchte ich eine Client Anwendung schreiben.
Das Protokol sieht dabei vor, das jeder Client seine Kontakte alle x Sekunden (normalerweise 4 Sekunden) via UDP Broadcast an alle andern Clients sendet. Da jeder Kontakt aus bis zu 3 einzelnen Messages bestehen kann, kommt man bei 50 Kontakten schnell zu 150 einzelnen UDP Nachrichten kommen die alle 4 Sekunden gesendet werden. Dummerweise passiert das dann auch so, das die Messages alle direkt hintereinander weg kommen, man also quasi keine große Zeit zwischen den Messages hat.
Meine Frage ist nun, wie ich hier am besten die Eingänge behandeln sollte.
Meine erste Idee war das ich das über einen Thread im Hintergrund erledigen lasse, was auch ging aber zu merklichen Verzögerungen im System führte wenn die Nachrichten alle auf einmal kamen.
Der nächste Ansatz war danach eine List of threads (Jeder Eingang ein eigener Thread), was aber das System über die Zeit immer langsamer machte bis es dann Stand.
Als letztes habe ich es nun mit 2 Threads versucht, Nr.1 schreibt den Eingang in eine ListOf, Nr.2 looped diese Liste und arbeitet ab was er findet. Das machte das System aber noch langsamer.
Entsprechend die Frage ob jemand eine Idee hat, wie man so ein Problem lösen kann. Ich wäre für einen Denkanstoß sehr dankbar.
ich habe folgendes Problem:
Für einen Program das mit dem DIS Protokol arbeitet möchte ich eine Client Anwendung schreiben.
Das Protokol sieht dabei vor, das jeder Client seine Kontakte alle x Sekunden (normalerweise 4 Sekunden) via UDP Broadcast an alle andern Clients sendet. Da jeder Kontakt aus bis zu 3 einzelnen Messages bestehen kann, kommt man bei 50 Kontakten schnell zu 150 einzelnen UDP Nachrichten kommen die alle 4 Sekunden gesendet werden. Dummerweise passiert das dann auch so, das die Messages alle direkt hintereinander weg kommen, man also quasi keine große Zeit zwischen den Messages hat.
Meine Frage ist nun, wie ich hier am besten die Eingänge behandeln sollte.
Meine erste Idee war das ich das über einen Thread im Hintergrund erledigen lasse, was auch ging aber zu merklichen Verzögerungen im System führte wenn die Nachrichten alle auf einmal kamen.
Der nächste Ansatz war danach eine List of threads (Jeder Eingang ein eigener Thread), was aber das System über die Zeit immer langsamer machte bis es dann Stand.
Als letztes habe ich es nun mit 2 Threads versucht, Nr.1 schreibt den Eingang in eine ListOf, Nr.2 looped diese Liste und arbeitet ab was er findet. Das machte das System aber noch langsamer.
Entsprechend die Frage ob jemand eine Idee hat, wie man so ein Problem lösen kann. Ich wäre für einen Denkanstoß sehr dankbar.