tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
8
ZUGRIFFE
2266
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    martinpriebe martinpriebe ist offline Mitglied Gold
    Registriert seit
    Mar 2007
    Beiträge
    125
    Hi,

    mal ne Hardcorefrage.

    Ich möchte/will/muss eine Prozess-Prozess Kommunikation aufbauen.

    Ein Prozess macht irgendwas.
    Prozess sendet nun Daten an 4 Prozesse.
    Von diesen 4 Prozessen bekommt er Daten zurück.

    Wie kann man das realisieren ?
    Ich kann keine Threads verwenden - es müssen Prozesse sein.

    Zu den 4 Prozessen geht eine Bilddatei.
    Zurück kommen Werte - strings, doubles, ints.
    Die verwertet er dann.

    Ich habe was über Windows API und WM_COPYDATA gelesen und über MailSlots.
    Oder doch Remoting ?
    Welche Kommunikation geht am schnellsten ?

    mfg
    Martin
     

  2. #2
    Konstantin Denerz Tutorials.de Gastzugang
    Hallo Martin,

    um welche Art von Anwendung handelt es sich in deinem Fall?
    Soll die Prozessverarbeitung innerhalb einer Anwendung stattfinden oder innerhalb mehrerer/verteilter Anwendungen?


    Gruß Konstantin
     

  3. #3
    martinpriebe martinpriebe ist offline Mitglied Gold
    Registriert seit
    Mar 2007
    Beiträge
    125
    Also es geht um Bildverarbeitung.

    Ein Prozess nimmt das Bild auf.
    Nun kommt eine Verarbeitung die nicht in Threads aufgeteilt werden kann aber aufgeteilt werden muss.

    Wie die Verteilung erfolgen soll ist eigentlich egal - hauptsache schnell.
     

  4. #4
    Konstantin Denerz Tutorials.de Gastzugang
    Hallo,

    also eine Bildverarbeitung kannst du auch in Threads durchführen, solange dies in einer Anwendung geschehen soll.
    Das wäre die leichteste Lösung. Weiß nicht, ob die Verwendung von .NET-Remoting performant ist, da du die Objekte ständig serialisiert/deserialisiert.
    Naja mehr Informationen über deinen Anwendungsfall würden bei der Problemlösung weiter helfen. Z.B. Findet eine Bildverarbeitung von mehreren tausend Bildern statt oder ...?
    Soll dies in einem Online/Offline-Modus stattfinden?


    Gruß Konstantin
     

  5. #5
    martinpriebe martinpriebe ist offline Mitglied Gold
    Registriert seit
    Mar 2007
    Beiträge
    125
    das mit den Threads ist klar aber wir müssen hier eine Bibliothek bzw. ein OCX Objekt verwenden das nicht in Threads aufgeteilt werden kann.

    der hauptprozess nimmt ein Bild online auf und teilt es in 4 Unterbilder.
    Die 4 Bilder sollen möglichst parallel abgearbeitet werden.

    Normalerweise kein Problem abewr wie gesagt das OCX Objekt.

    Nun war die Idee da Prozesse zu verwenden.
    Da könnte man 4 dieser Objekte generieren.

    Hab leider noch nie etwas in der Richtung Remoting etc. gemacht.
    Threadskenntnisse ja, Prozesse nein
     

  6. #6
    Konstantin Denerz Tutorials.de Gastzugang
    Mein Vorschlag ist, bau die OCX-Objekte zur Laufzeit in .NET-Objekte um. Was brauchst du von den OCX-Objekten? Nur den Zustand oder nicht? Gibts die Libs öffentlich?

    Gruß Konstantin
     

  7. #7
    martinpriebe martinpriebe ist offline Mitglied Gold
    Registriert seit
    Mar 2007
    Beiträge
    125
    ne ne - nix öffentlich.
    Die kosten einiges.

    den Objekten kann man eine spezielle Datei geben.
    Die Datei beinhaltet die Bildverarbeitung.
    Nun kann ich mittels diesem Objekt Variablen und Bilder übergeben

    dann sagt man nur noch start und die datei wird durch das objekt abgearbeitet.

    zum schluss lese ich variablen über das Objekt aus.


    mfg
    Martin
     

  8. #8
    heidi fahn-friedle heidi fahn-friedle ist offline Grünschnabel
    Registriert seit
    Jan 2009
    Beiträge
    1
    Hi,

    habe ein ähnliches Problem zu lösen. Habe ebenfalls ein Bilddokument, welches mit einer nicht multi-threading fähigen Dll verarbeitet werden soll. Trotzdem soll eine parallele Verarbeitung von mehrereb Dokumenten möglich sein.

    Wie has du dein Problem gelöst? Remoting, Memeory mapped files, sockets ...?

    Gruß,

    Heidi
     

  9. #9
    martinpriebe martinpriebe ist offline Mitglied Gold
    Registriert seit
    Mar 2007
    Beiträge
    125
    hi,

    ich habs per Memory Mapped File gemacht.
    Geht relativ einfach mit den Win APIs.
    Auch recht zuverlässig.

    Als Signal das etwas in die MMO geschreiben wurde nehme ich ebenfalls ein Win API.
    SystemEvent.

    Man muss nur die bytes des Bitmaps holen und dann in die MMO schreiben/kopieren.
    Als erstes Byte würde ich aber die Größe des Datenpaketes rein legen.
    Dann weiß die Gegenseite wie viele bytes geholt werden müssen.
    Falls es mehrere Bilder sein können in der MMO dann braucht du noch ein paar ein paar Längenbytes zusätzlich für des Bild seperat.


    Sockets und Remoting war einfach zu langsam.

    falls du noch fragen hast .. stehe bereit.
    mfg
    Martin


    P.S. ab Framework 4.0 soll es eine Memory Mapped File Klasse geben.
    Dann wird es etwas "schöner" im Code.
     

Ähnliche Themen

  1. Antworten: 2
    Letzter Beitrag: 28.09.10, 02:43
  2. Antworten: 1
    Letzter Beitrag: 07.10.09, 19:53
  3. Prozess
    Von Kaiser206 im Forum Microsoft Windows
    Antworten: 6
    Letzter Beitrag: 26.12.05, 18:24
  4. Prozess anhand Prozess-Id aktivieren
    Von krauti im Forum C/C++
    Antworten: 3
    Letzter Beitrag: 27.01.05, 08:53
  5. Prozess
    Von ProgFreak im Forum C/C++
    Antworten: 3
    Letzter Beitrag: 16.12.04, 22:26