AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Thread: Direkt auf die Form zugreifen?
Thema durchsuchen
Ansicht
Themen-Optionen

Thread: Direkt auf die Form zugreifen?

Ein Thema von Helmi · begonnen am 27. Mär 2005 · letzter Beitrag vom 30. Mär 2005
Antwort Antwort
Mephistopheles
(Gast)

n/a Beiträge
 
#1

Re: Thread: Direkt auf die Form zugreifen?

  Alt 29. Mär 2005, 20:09
Zitat von Michael_Bayer:
Also wie ich das verstanden habe, muss man vor dem kritischen Bereich (dem Ändern eines VCL-Objektes) die "critical section" "entern" und danach wieder "leaven".
Meine Frage nun: Wenn ich die critical section betrete, woher wissen dann die anderen Threads, welches Objekt sie nicht anfassen dürfen? (Dass die Threads dann komplett stillstehen, kann ja nicht sein)
Ganz einfach. Jeder Thread der auf ein bestimmtes Objekt (sei es ein Integer, ein Array oder ein String) zugreift, sollte vorher in die Critical Section gehen. Der Code danach sollte IMMER in einem try-finally-Block stehen, damit die CritSect auch verlassen wird!

Zitat von Michael_Bayer:
EDIT: Ahhhh verstanden - Wenn ich eine CriticalSection betrete, dann bin nur ich darin und alle, die auch etwas "kritisches" machen wollen, müssen warten.
So muss ich überall, wo etwas zusammenhauen könnte, die CriticalSection benutzen.
Exakt. Und sobald du ein weiteres Objekt einführst wo mehrere Threads lesen und schreiben, führst du eine neue CritSect ein. So können die Threads auch dann noch die zweite Sache abarbeiten, während es bei der ersten vielleicht nicht geklappt hat.

Zitat von Michael_Bayer:
Allerdings kommt mir das etwas.. naja.. ineffektiv vor.
Ich muss ja dann auch bei Leseoperationen auf ein Objekt, dass woanders geschrieben werden könnte, eine CriticalSection benutzen - so werden ja auch Leseoperationen serialisiert...muss das sein?
Anders geht es nicht. Denn genau das ist ja das Problem, wenn sich mehrere Codeteile eine Ressource teilen. Der Punkt ist ja gerade, daß du die Geschichte so effektiv wie möglich gestalten sollst und kannst, indem du die rechenintensiven Sachen sinnvoll trennst und parallelisierst. Das ist aber ein eigenes Themengebiet der Informatik und kann sicherlich nicht in Gänze in einem solchen Thread hier abgehandelt werden
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:46 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz