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?

  1. AGrobkörniges Sperren hat stets die höhere Parallelität
  2. BBei feinkörnigem Sperren sinkt die Zahl der Sperren
  3. 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.

Dieses Thema üben Zur Themenseite

Weitere Fragen zu Multicore und Synchronisation

  1. Welche Eigenschaft sperrfreier (lock-free) Algorithmen ist richtig?
  2. Welche Aussage zum kritischen Abschnitt (Critical Section) ist richtig?
  3. Welche Aussage zur in parallelen Programmen verwendeten Barrierensynchronisation ist richtig?
  4. Aktualisieren 64 Kerne einen einzigen gemeinsamen Zähler fortwährend gleichzeitig mit atomaren Befehlen, wird es auch mit mehr Kernen nicht schneller. Was ist der Hauptgrund?
  5. Welche Aussage zu NUMA-Systemen (Non-Uniform Memory Access) ist richtig?

Vergleiche zu diesem Thema