M : N Producer - Consumer - Architektur

    M : N Producer - Consumer - Architektur

    Hallöchen,

    folgendes konzeptuale Problem:
    Ich habe M Threads (Producer) , die mir asynchron Daten liefern, also zeitlich nicht vorhersehbar und ggf. parallel.
    Je nach Konfiguration muß ich N Einheiten (Consumer) ansprechen ( N >= M), die diese Daten entgegennehmen und ggf. parallel verarbeiten (in Thread, klar).
    Ich suche jetzt eine schlüssige Idee, wie ich die Daten an die Consumer weiterreiche.
    Diese sollen Wegwerfthreads sein, die im Bedarffall erzeugt und gestartet werden. Hauptsache, die Daten und Threads produzieren keine Kollisionen u.o. Deadlocks.
    Wäre eine ObjectQueue eine Option ?
    Das Ganze muß in Delphi 7 stattfinden.
    ism

    PS : Nach reiflichem Überlegen ist das hauptziel, den Producer nicht auf den Consumer warten zu lassen, die Beiden also vollständig zu entkoppeln.
    Morgen ist Heute schon Gestern
    Moin... 8o
    Ich habe deinen Thread schon mehrfach gelesen...und immer noch nicht verstanden was du möchtest. ;(

    Ich würde das so prinzipell lösen:
    1. Der Producer holt die Daten ab und legt sie in eine Liste oder ähnliches. docwiki.embarcadero.com/Librar…stem.Contnrs.TObjectQueue
    2. Der Producer muß die Consumer nicht kennen... sondern nur den "Datentyp"
    3. Der Consumer wird über ein Event von der Liste benachrichtigt das neue Daten vorliegen.
    4. Der Consumer verarbeitet die Daten...fertsch. Oder? 8)

    Je nach Konfiguration muß ich N Einheiten (Consumer) ansprechen

    ...wer entscheidet welcher Consumer welche Daten bekommt? ?( Im Prinzip muß der Producer schon die Daten "markieren".

    die Beiden also vollständig zu entkoppeln.

    ...so sieht es aus. :thumbup:

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „haentschman“ ()