<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://docwiki.embarcadero.com/RADStudio/Athens/d/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Danijelp</id>
	<title>RAD Studio - Benutzerbeiträge [de]</title>
	<link rel="self" type="application/atom+xml" href="https://docwiki.embarcadero.com/RADStudio/Athens/d/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Danijelp"/>
	<link rel="alternate" type="text/html" href="https://docwiki.embarcadero.com/RADStudio/Athens/de/Spezial:Beitr%C3%A4ge/Danijelp"/>
	<updated>2026-08-31T02:40:00Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.43.0</generator>
	<entry>
		<id>https://docwiki.embarcadero.com/RADStudio/Athens/d/index.php?title=Kritische_Abschnitte&amp;diff=199091</id>
		<title>Kritische Abschnitte</title>
		<link rel="alternate" type="text/html" href="https://docwiki.embarcadero.com/RADStudio/Athens/d/index.php?title=Kritische_Abschnitte&amp;diff=199091"/>
		<updated>2016-01-19T08:23:41Z</updated>

		<summary type="html">&lt;p&gt;Danijelp: RS-73955&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Parent|Gleichzeitigen Zugriff vermeiden}}&lt;br /&gt;
&lt;br /&gt;
Wenn ein Objekt nicht über integrierte Sperrmechanismen verfügt, kann auf einen so genannten kritischen Abschnitt ausgewichen werden. Kritische Abschnitt arbeiten wie Gates, die jeweils nur einen einzelnen Thread durchlassen. Für den praktischen Einsatz muss eine globale Instanz von [[lib_de:System.SyncObjs.TCriticalSection|System.SyncObjs.TCriticalSection]] erzeugt werden. &#039;&#039;TCriticalSection&#039;&#039; besitzt zwei Methoden: [[lib_de:System.SyncObjs.TCriticalSection.Acquire|Acquire]] (verhindert, dass andere Threads den Abschnitt ausführen) und [[lib_de:System.SyncObjs.TCriticalSection.Release|Release]] (entfernt den Block).&lt;br /&gt;
&lt;br /&gt;
Jeder kritische Abschnitt ist dem globalen Speicher zugeordnet, der geschützt werden soll. Vor dem Zugriff auf diesen globalen Speicher muss der Thread mit der Methode &#039;&#039;Acquire&#039;&#039; sicherstellen, dass kein anderer Thread den Speicher verwendet. Nach Ausführung der Operationen ruft der Thread die Methode &#039;&#039;Release&#039;&#039; auf, sodass wiederum andere Threads mit einem Aufruf von &#039;&#039;Acquire&#039;&#039; auf den globalen Speicher zugreifen können.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;Warnung:&#039;&#039;&#039; Kritische Abschnitte erreichen nur dann die vorgesehene Wirkung, wenn sie von jedem Thread für den Zugriff auf den verknüpften globalen Speicher verwendet werden. Sobald es Threads gibt, welche den kritischen Abschnitt ignorieren und ohne Aufruf von &#039;&#039;Acquire&#039;&#039; auf den globalen Speicher zugreifen, können sich Kollisionen ergeben.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Angenommen, in einer Anwendung ist zur Realisierung eines kritischen Abschnitts die globale Variable &#039;&#039;LockXY&#039;&#039; eingerichtet, welche den Zugriff auf die globalen Variablen X und Y verhindern soll. Jeder Thread, der X oder Y verwendet, muss indirekt vorgehen, also den kritischen Abschnitt z.B. wie folgt aufrufen:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;delphi&amp;quot;&amp;gt;&lt;br /&gt;
LockXY.Acquire; { lock out other threads }&lt;br /&gt;
try&lt;br /&gt;
  Y := sin(X);&lt;br /&gt;
finally&lt;br /&gt;
  LockXY.Release;&lt;br /&gt;
end;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
pLockXY-&amp;gt;Acquire(); // lock out other threads&lt;br /&gt;
try {&lt;br /&gt;
    Y = sin(X);&lt;br /&gt;
}&lt;br /&gt;
__finally {&lt;br /&gt;
    pLockXY-&amp;gt;Release();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Siehe auch==&lt;br /&gt;
&lt;br /&gt;
* [[Objekte sperren]]&lt;br /&gt;
* [[Haupt-VCL-Thread benutzen]]&lt;br /&gt;
* [[TMultiReadExclusiveWriteSynchronizer-Objekte]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Windows-Entwicklerhandbuch]]&lt;br /&gt;
[[Category:{{Delphi}}]]&lt;br /&gt;
&lt;br /&gt;
[[en:Using Critical Sections]]&lt;br /&gt;
[[fr:Utilisation de sections critiques]]&lt;br /&gt;
[[ja:クリティカルセクションを使用する]]&lt;/div&gt;</summary>
		<author><name>Danijelp</name></author>
	</entry>
</feed>