as_string
Haudegen
Dabei seit: 06.11.2013
Beiträge: 638
Herkunft: Heidelberg
|
|
Ich glaube, Du verstehst die Aussage, dass die Ausgabe nicht immer gleich ist, nicht richtig.
Das soll bedeuten: Wenn Du das Programm mehrmals ausführst, dann bekommst Du immer wieder unterschiedliche Ausgaben, je nachdem, in welcher Reihenfolge das Betriebssystem die unterschiedlichen Threads aktiviert und anhält.
Die Ausführungs-Reihenfolge ist also nicht deterministisch und damit auch nicht, welcher Thread welchen Wert für i ausgibt.
Laufen wirklich nur maximal 2 Threads parallel? Es wird ja erst ein Kind abgespaltet, das die Ausgabe macht, dann aber gleich weiter läuft, in der for-Schleife wieder zum fork() kommt, also einen weiteren Kind-Prozess abspaltet, während die 20s für den ersten Vater-Prozess noch gar nicht abgelaufen sind. In dem Moment müssten also schon 3 Prozess laufen, denke ich, oder?
Andere Frage ist noch, ist das i als volatil deklariert?
Gruß
Marco
|
|