Informatiker Board (http://www.informatikerboard.de/board/index.php)
- Themengebiete (http://www.informatikerboard.de/board/board.php?boardid=1)
-- Informatik in der Schule (http://www.informatikerboard.de/board/board.php?boardid=21)
--- fork() (http://www.informatikerboard.de/board/thread.php?threadid=4337)


Geschrieben von Juergen20 am 19.11.2020 um 21:44:

  fork()

Meine Frage:
Hallo, ich hätte eine frage zu der Aufgabe welche im Anhang zu sehen ist.
Zu der a):
Die Ausgabe ist nicht immer gleich weil "i" ja immer hochgezählt wird aber das kann doch nicht die ganze Begründung sein. Bei meiner Ausgabe welche ich im Compiler ausprobiert habe ändert sich nur "i".

Zu der b):
Die Antwort ist 2 oder? Also Vater und Kind Prozess


Meine Ideen:
Zu a): Das sich nur "i" ändert
Zu b): 2



Geschrieben von as_string am 23.11.2020 um 16:10:

 

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


Forensoftware: Burning Board, entwickelt von WoltLab GmbH