Ich habe ein Programm geschrieben, das sich in einer Schleife verzweigt. Das einzige, was Kinderprozesse tun, ist, einen Zähler zu erhöhen und zu beenden, während ein Elternprozess auf jeden von ihnen wartet.
Mein Ziel ist es, Benutzer- und Systemzeit des Elternprozesses und aller seiner Kinder getrennt zu messen. Ich bin mit Elternprozess mit times () -Funktion und Struktur tms gelungen. Überraschenderweise funktioniert der gleiche Ansatz für Kinderprozesse nicht. Was ist der Fehler, den ich mache? Wie misst man diese Zeiten?
Ich habe es auch versucht () und ich habe versagt.
Mein Code:
%Vor%Ich denke, das Problem ist, dass Ihre Kinder zu schnell ausführen ; Sie brauchen nicht genug Zeit, um ausgeführt zu werden, also ist die Summe ihrer Zeit viele Nullen. Um diese Theorie zu testen, habe ich Ihr Programm leicht geändert:
%Vor% Sie werden sehen, dass ich die Anzahl der Kinder drastisch reduziert habe und die Kinder dazu gebracht habe, einige 10_000
printf(... getpid())
Operationen. Jetzt sind die Zeiten etwas:
Ich fürchte, deine Kinder hatten einfach nicht genug Arbeit, um etwas zu erreichen. (Seltsam, klingt nach Erziehungsratschlägen.)
Jedes Kind erhält einen eigenen Adressraum. Der Code funktioniert nicht, da er seine eigene lokale Kopie von counter
inkrementiert und beendet, wobei die Version im Elternprozess bleibt / alle anderen Kinder unberührt bleiben.
Es ist auch sehr wahrscheinlich, dass Sie mit so vielen Kindern Fehler bekommen.
Tut mir leid, ich konnte nur mit der Hälfte des Programms helfen: (.