TMultiReadExclusiveWriteSynchronizer - Verständnisfrage

    TMultiReadExclusiveWriteSynchronizer - Verständnisfrage

    Mahlzeit,

    ich habe folgende Frage:
    Angenommen, in meinem Hauptformular tummeln sich zwei globale Records mit Meßdaten, konkrete Struktur unwichtig.
    Die werden unanhängig voneinander beschrieben (eventbasiert) und stören sich deshalb auch nicht.
    Jetzt möchte ich in einem Nebenthread mit diesen beiden Records arbeiten und enen dritten Record beschreiben etc. pp.
    Ich mache also folgendes:

    Delphi-Code

    1. Links, Rechts, Vereinigung : TMesswerte; // die zwei Quell- und der Zielrecord
    2. // symbolisch: Links + Rechts -> Vereinigung
    3. // und noch viele andere Variablen, die momentan nicht interessieren
    4. Zustand : Tbla;
    5. Verlauf: TBlubb;
    6. ZOLL:TMultiReadExclusiveWriteSynchronizer;
    7. // ...
    8. ZOLL:=TMultiReadExclusiveWriteSynchronizer.create;
    9. // ..
    10. // jetzt kommts:
    11. ZOLL.beginwrite;
    12. Vereinigung:=Aggregierung(Links,Rechts);
    13. ZOLL.Endwrite;
    14. //...


    Nach dem Lesen der Hilfe wurde auch nicht klarer, ob nur Links, Rechts & Vereinigung oder ALLE globalen Variablen
    des Formulars in der Begin..Endwrite - Klammer blockiert sind.
    Dann könnte ich mir im zweiten Falle ja die gesamte Anwendung blockieren...

    Wie sehen speziell die Praktiker das ?
    ism
    Morgen ist Heute schon Gestern
    Du hast gesehen, daß BeginWrite eine Funktion ist und keine Procedure ?
    Es werden dadurch alle anderen Threads angehalten, wenn diese BeginRead oder BeginWrite aufrufen. Damit ist klar : Alles, was zwischen BeginWrite und EndWrite passiert ( Alle Speicherbereiche ) werden geschützt. Du mußt aber auch konsequent alle Zugriffe auf die Variablen nit Begin/End-Read bzw. Begin/End-Write schützen
    Glückauf

    Herr, wirf Hirn vom Himmel

    Ein Leben ohne Möpse ist möglich, aber sinnlos ( Loriot )
    Der beste Platz für Politiker ist das Wahlplakat. Dort ist er tragbar, geräuschlos und leicht zu entfernen ( Loriot )

    Es gibt Leute, die fühlen sich überall gedemütigt, wo sie nicht frech sein dürfen ( Otto Weiss )

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „guinnes“ ()