Frage zu Threading



  • Hallo zusammen,
    ich habe inzwischen ein paar kleinere Projekte mit C++ und Qt realisiert und möchte mich jetzt an Netzwerk und Threading probieren.

    Folgendes Projekt möchte ich realisieren:
    Es gibt Clients die Audiodateien an einen Server schicken und dieser sie zu mp3 konvertiert und zurückgibt. Dabei ist die Konvertierung eher Nebensache (z.B. beschränkt auf nur wav->mp3).
    Es soll beliebig viele Clients geben die aber nur eine Datei auf einmal schicken können und der Server sie paralell abarbeitet.
    Das alle Rechner in einem Netz sind und miteinander kommunizieren können wird vorausgesetzt. Dateiübertragung soll über TCP stattfinden.

    Auf Clientseite soll es also einen Thread geben, der auf Eingabe der Datei wartet und einen Thread der diese Datei sendet und auf den Empfang der mp3 wartet.
    Auf Serverseite gibt es ebenfalls einen Thread der auf das Empfangen/Senden über das Netzwerk von Daten wartet,
    einen Thread der auf Empfangen/Senden an den Converter wartet
    und je einen Thread für jeden Convertierungsvorgang.
    Wenn das soweit läuft soll noch eine kleine Ressourcensteuerung der Konvertierungsthreads dazu kommen, um nicht den ganzen Server lahm zu legen.

    Ist diese Überlegung grundsätzlich erstmal in Ordnung oder fehlt da etwas Grundsätzliches? Realisiert werden soll das Projekt wieder in Qt (da hier GUI,Threads und der TCP Stack schon mit dabei sind).

    Vielen Dank im Voraus
    sherlock



  • Da ein Client immer nur eine Datei zu einer Zeit schicken/empfangen können soll, sehe ich da keine Notwendigkeit für einen zweiten Thread; Eingabe, senden und auf das Ergebnis warten kann meiner Meinung alles in einem Thread gehandelt werden.

    Auf dem Server sehe ich einen Thread, der auf eingehende Verbindungen wartet, und beliebig viele Threads, die die eingegangenen Verbindungen verarbeiten --> Daten lesen, konvertieren, Ergebnis zurücksenden.

    Evtl. noch einen Hauptthread, der einfach auf eine Eingabe wartet, damit der Server geordnet beendet werden kann.



  • Belli schrieb:

    Da ein Client immer nur eine Datei zu einer Zeit schicken/empfangen können soll, sehe ich da keine Notwendigkeit für einen zweiten Thread; Eingabe, senden und auf das Ergebnis warten kann meiner Meinung alles in einem Thread gehandelt werden.

    -> Blockierende GUI
    Zwei Threads sollten es beim Client schon sein.


Anmelden zum Antworten