Threads untereinander benachrichtigen



  • wie würdet ihr das lösen.
    ich hab da einen Server und sobald sich ein neuer Client anmeldet start er einen neuen Client Thread in dem gelauscht wird ob der Client was sendet. Sendet ein Client etwas möchte ich dass alle andere Clients sofort informiert werden. Wie mach ich das jetzt am besten. Meiner Meinung nach brauche ich eine StatusVariable. Der Server checkt nun regelmäßig ob sich die Variable geändert. Hat sie das informiert er alle clients. Mein Problem nun was macht man wenn 2 Clients zur selben Zeit Änderungen haben. Dann funktioniert meine Lösung nicht mehr 😞



  • Meine Lösung: Ich habe dem Client-Thread (welche der Server verwaltet) eine Benachrichtigungs-Queue spendiert. Der Client-Thread schläft, solange keine Nachricht in der Queue ist.

    Wenn eine Nachricht eingestellt wird, wacht der Thread auf und entnimmt die erste Nachricht aus der Queue und bearbeitet diese. Wenn keine Nachricht in der Queue ist, legt sich der Thread wieder schlafen.
    Der Server-Thread arbeitet auch mit eine Benachrichtigungs-Queue und arbeitet mit dieser ähnlich wie der Client-Thread.

    Wenn also ein Client den Server beauftragt, die anderen Clients zu benachrichtigen, wird dieser Auftrag vom Server verarbeitet und dann, wenn vorhanden, ein neuer Auftrag ggf. von einem anderen Client verarbeitet. Die einzelnen Clients verarbeiten als Threads ihre Aufträge autark.

    Kann ich so schnell nicht besser erklären, aber vielleicht weißt Du schon, was ich mit der losgelösten Benachrichtigungs-Queue Verarbeitung meine.


Log in to reply