gemeinsamer Speicherbereich / Datenaustausch zwischen 2 Programmen



  • Hallo,

    ich möchte gerne folgendes Realisieren:
    - es soll ein Datenempfangsprogramm geben, welches Daten empfängt und in den Speicher legt. Dieses soll n-Mal laufen da es auf unterschiedlichen Schnittstellen Daten erhält.
    - nun soll es ein zentrales Programm geben welches sich die Daten der Emfangsprogramme "sammelt" und weiter verarbeitet.

    Da es bei den Programmen für den Datenempfang um Geschwindigkeit geht sollen diese möglichst schlank im Hintergrund laufen, während das Programm für die Datenverarbeitung komplexer ist und keinen Zeitkriterien unterliegt.

    Hat da jemand nen Tip für mich wie ich die Sache angehen kann? Oder vieleicht nen guten Literatur / Link hinweis?

    Mfg
    Piet



  • Warum brauchst du da zwei programme? reichen 2 threads nicht?



  • PietSoft schrieb:

    Hat da jemand nen Tip für mich wie ich die Sache angehen kann? Oder vieleicht nen guten Literatur / Link hinweis?

    Mfg
    Piet

    Shared memory ist das was Du suchst.



  • Erst hatte ich überlegt es über Threads zu machen, aber dann kam mir der gedanke ob es nicht schneller ist wenn ich den datenempfang in einzelne programme auslager.

    wichtig ist mir die Plattformunabhängigkeit.



  • Bei Datenempfang denke ich direct an Sockets 😛

    Ich hab mal was fork() gehört um einzelne Prozesse zu starten aber ich bin mir nicht sicher dass das auch unter Windows funtzt , ich kenn das nur von Linux , aber kannst ja mal suchen 😉

    Gruß Chris



  • PietSoft schrieb:

    Erst hatte ich überlegt es über Threads zu machen, aber dann kam mir der gedanke ob es nicht schneller ist wenn ich den datenempfang in einzelne programme auslager.

    Ich würde schätzen, dass es mit Threads schneller geht. Das umschalten zwischen Prozessen wird länger brauchen, denk ich.



  • PietSoft schrieb:

    Erst hatte ich überlegt es über Threads zu machen, aber dann kam mir der gedanke ob es nicht schneller ist wenn ich den datenempfang in einzelne programme auslager.

    Dir ist schon klar, dass du 90% der Zeit im Leerlauf bist, weil du auf die Daten wartest die irgendwann mal ankommen?

    Inter Process Communication ist auch deutlich teurer und aufwendiger als 2 Threads zu machen. Denn was sind Prozesse anderes als Threads auf einer höheren Ebene?



  • Foxx90 schrieb:

    Bei Datenempfang denke ich direct an Sockets 😛

    Damit liegt du garnicht schlecht 😉
    Im maximafall kann es bis zu 16 gleichzeitiger TCP Verbindungen kommen auf den Daten empfangen werden.

    dann werde ich mal googlen, danke


Anmelden zum Antworten