001
23.12.2019, 19:03 Uhr
ao
(Operator)
|
Zitat von minimi: |
WIeso wird nicht "foo" und "goo" beides ausgegeben? (Es müssten doch die 2 Threads parallel laufen? (habe ein Mehrkern Prozessor))
|
Es laufen 2 Threads parallel, und zwar der main-Thread und t1. t1 rennt wild im Kreis und gibt seinen Text aus, und main steht in t1.join und wartet darauf, dass t1 sich beendet, was nie geschieht. t2 ist noch gar nicht erzeugt worden, das würde im nächsten Schritt nach t1.join geschehen.
Zitat: |
(habe ein Mehrkern Prozessor)
|
Auch auf einem Singlecore-Prozessor würdest du Multithreading-Verhalten sehen (vorausgesetzt, du hast es richtig programmiert). Es wäre dann nur nicht echt parallel, sondern nur quasi-parallel (in kurzen Häppchen abwechselnd).
Und auch auf einem Multicore-Prozessor gibt es keine Garantie, dass beide Threads auf verschiedenen Kernen laufen. Das hängt davon ab, welche Prozesse sonst noch aktiv sind und nach einer CPU verlangen. |