Multicore und Synchronisation
Welche Aussage im Vergleich von „grobkörnigem Sperren“, bei dem eine gesamte große Datenstruktur mit einer Sperre geschützt wird, und „feinkörnigem Sperren“, bei dem Teile mit getrennten Sperren geschützt werden, ist richtig?
- AGrobkörniges Sperren hat stets die höhere Parallelität
- BBei feinkörnigem Sperren sinkt die Zahl der Sperren
- CFeinkörniges Sperren erlaubt mehreren Threads die gleichzeitige Nutzung verschiedener Teile und hat hohe Parallelität, doch der Entwurf wird komplexer und die Deadlock-Gefahr steigt
Antwort und Erläuterung anzeigen
Antwort: C. Feinkörniges Sperren erlaubt mehreren Threads die gleichzeitige Nutzung verschiedener Teile und hat hohe Parallelität, doch der Entwurf wird komplexer und die Deadlock-Gefahr steigt
Grobkörniges Sperren ist einfach und wenig fehleranfällig, doch auch Threads, die voneinander unabhängige Teile nutzen, warten aufeinander, sodass es bei mehr Kernen kaum schneller wird. Bei feinkörniger Aufteilung, etwa einer Sperre je Bucket einer Hashtabelle, können andere Teile gleichzeitig bearbeitet werden. Es gibt jedoch mehr Situationen, in denen mehrere Sperren erworben werden, und die Verwaltung der Erwerbsreihenfolge sowie der Aufwand der Sperren selbst werden zum Problem.