3.2.11.1.2 Race Conditions

[gesichtete Version][gesichtete Version]
Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
Zeile 65: Zeile 65:
</p>
</p>
</loop_area>
</loop_area>
</p>
<p>
Man bemerke, dass Race Conditions nicht allein durch [[Synchronisation#Definition:_Nebenl.C3.A4ufigkeit|nebenläufige Ausführung]] von Prozessen oder Threads entstehen. Erst wenn gemeinsam genutzte Betriebsmittel im Spiel sind, kommt es zu kritischen Abläufen.
</p>
<p>
Im Quelltext der beteiligten Prozesse oder Threads lassen sich dann sogar Abschnitte identifizieren, welche ''kritisch'' oder ''unkritisch'' im Hinblick auf Race Conditions sind.
</p>
</p>



Version vom 2. November 2013, 13:28 Uhr

{{#index:Race Conditions}} Das folgende Video zeigt ein anschauliches Beispiel für Race Conditions:


Quellcode aus dem Video

Hier ist der Quellcode aus dem Video:

 1 public class Beispiel_Race_Conditions {
 2 
 3 	static int counter = 0;
 4 
 5 	public static class Counter_Thread_A extends Thread {
 6 		public void run() {
 7 			counter = 10;
 8 			counter++;
 9 			counter++;
10 			System.out.println("A-Counter: " + counter);
11 		}
12 	}
13 
14 	public static class Counter_Thread_B extends Thread {
15 		public void run() {
16 			counter = 20;
17 			counter++;
18 			counter++;
19 			counter++;
20 			counter++;
21 			counter++;
22 			counter++;
23 			System.out.println("B-Counter: " + counter);
24 		}
25 	}
26 
27 	public static void main(String[] args) {
28 		Thread a = new Counter_Thread_A();
29 		Thread b = new Counter_Thread_B();
30 		a.start();
31 		b.start();
32 	}
33 }


Definition: Race Conditions

Definition

{{#index:kritischer Ablauf|Ablauf, kritisch}} Unter Race Conditions (oder einem kritischem Ablauf) versteht man Situationen, bei denen zwei oder mehr Prozesse (bzw. Threads) ein oder mehrere Betriebsmittel gemeinsam nutzen, und das Ergebnis der Ausführung von der zeitlichen Reihenfolge der Zugriffe der beteiligten Prozesse oder Threads auf das (bzw. die) Betriebsmittel abhängt.

Man bemerke, dass Race Conditions nicht allein durch nebenläufige Ausführung von Prozessen oder Threads entstehen. Erst wenn gemeinsam genutzte Betriebsmittel im Spiel sind, kommt es zu kritischen Abläufen.

Im Quelltext der beteiligten Prozesse oder Threads lassen sich dann sogar Abschnitte identifizieren, welche kritisch oder unkritisch im Hinblick auf Race Conditions sind.



Diese Seite steht unter der Creative Commons Namensnennung 3.0 Unported Lizenz http://i.creativecommons.org/l/by/3.0/80x15.png