Registrierung Kalender Mitgliederliste Teammitglieder Suche Häufig gestellte Fragen Zur Startseite

Informatiker Board » Themengebiete » Informatik in der Schule » fork() » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen
Neues Thema erstellen Antwort erstellen
Zum Ende der Seite springen fork()
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
Juergen20
Grünschnabel


Dabei seit: 27.06.2020
Beiträge: 4

fork() Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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

Juergen20 hat dieses Bild (verkleinerte Version) angehängt:
fork.png

19.11.2020 21:44 Juergen20 ist offline E-Mail an Juergen20 senden Beiträge von Juergen20 suchen Nehmen Sie Juergen20 in Ihre Freundesliste auf
as_string as_string ist männlich
Haudegen


Dabei seit: 06.11.2013
Beiträge: 639
Herkunft: Heidelberg

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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
23.11.2020 16:10 as_string ist offline E-Mail an as_string senden Beiträge von as_string suchen Nehmen Sie as_string in Ihre Freundesliste auf
Baumstruktur | Brettstruktur
Gehe zu:
Neues Thema erstellen Antwort erstellen
Informatiker Board » Themengebiete » Informatik in der Schule » fork()