Multicore und Synchronisation
Welche Aufteilung eignet sich, wenn Schleifendurchläufe auf mehrere Threads verteilt werden und der Rechenaufwand je Durchlauf stark schwankt?
- AStatische Zuweisung, bei der zu Beginn gleichmäßig nach Zahl der Durchläufe aufgeteilt und danach nicht mehr angepasst wird
- BAlle Durchläufe einem einzigen Thread überlassen
- CDynamische Zuweisung, bei der die Arbeit in kleine Portionen unterteilt wird und freie Threads die nächste Portion holen
Antwort und Erläuterung anzeigen
Antwort: C. Dynamische Zuweisung, bei der die Arbeit in kleine Portionen unterteilt wird und freie Threads die nächste Portion holen
Statische Zuweisung ist aufwandsarm, doch sind die Durchläufe unterschiedlich schwer, hinkt nur der Thread hinterher, der die schweren Teile übernommen hat, und die anderen müssen warten. Bei dynamischer Zuweisung holen die Threads die nächste Arbeit z. B. von einem gemeinsamen Zähler, und früher fertige Threads übernehmen mehr, sodass die Last ausgeglichen wird. Sind die Portionen zu klein, steigt jedoch der Aufwand für das Holen, weshalb die Größe abzustimmen ist.