Pipelinedesign (Datenaustausch zwischen den Stages)



  • Hi,

    mich würde interessieren, wie man am besten eine Pipeline durchläuft, wenn sich die meisten Stages im gleichen Thread befinden und nur beispielsweise die letzte in einem neuen Thread.

    Stage-->Port-->Stage-->Port-->Stage

    Die Portklasse soll die Daten der jeweils rechten Stage entgegennehmen. Normalerweise sollte dann die nächste (linke) Stage diese aus dem Port rausholen. Die meisten Stages befinden sich allerdings im gleichen Thread, so dass ich ja vom Port irgendwie die nächste Stage aufrufen müsste. Wie würdet ihr die Kommunikation zwischen den Stages realsieren?

    Kurz ein paar Informationen zu meiner konkreten Pipeline:

    Die meisten Stages befinden sich im gleichen Thread. Lediglich die letzte Stage ist in einem anderen Thread. Für den lettzen Port dachte ich mir, dass dieser eine Queue besitzt, die die einkommenden Daten speichert und der andere Thread liest sie raus.
    Schön wäre obendrein, wenn die Stages ihre Ports kennen (also keine pure virtual classes) und die Ports (egal ob mit oder ohne Queue) stets das gleiche Object (Port) verwenden könnten.

    Ich möchte versuchen, die Kommunikation zwischen den Stages möglichst effizient programmieren... nicht weil ich es brauch sondern weil ich es gern mal ausprobieren möchte, was man einsparen kann. 🙂

    Für Tipps zum Design oder Opensource-Projekte die so eine Thematik behandeln, wäre ich euch dankbar.

    VG
    Hannes



  • Wo kommt in deiner Frage C++ vor?



  • Dieser Thread wurde von Moderator/in SeppJ aus dem Forum C++ (alle ISO-Standards) in das Forum Rund um die Programmierung verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Verwechselst du links und rechts? Deine Pfeile laufen von links nach rechts, also seh ich nicht, wie hier ein Port die Daten von rechts nach links durchreichen könnte.

    Ich denke, die Frage ist nicht ganz so einfach zu beantworten. Man kann Pipelines unterschiedlich und unterschiedlich komplex designen.
    Eine wichtige Entscheidung wäre z.B., ob sich die Pipeline um die Steuerung kümmert, oder die einzelnen Knoten.


Log in to reply