Multicore und Synchronisation

Welche Aussage zum kritischen Abschnitt (Critical Section) ist richtig?

  1. ADer Programmteil, der gemeinsame Daten bearbeitet und daher nur von einem Thread gleichzeitig ausgeführt werden darf
  2. BDer Programmteil mit der längsten Laufzeit
  3. CDer Teil, der nur bei Fehlern ausgeführt wird
Antwort und Erläuterung anzeigen

Antwort: A. Der Programmteil, der gemeinsame Daten bearbeitet und daher nur von einem Thread gleichzeitig ausgeführt werden darf

Führen mehrere Threads gleichzeitig den Teil aus, der eine gemeinsame Variable liest und ändert, entsteht ein Data Race. Ein solcher Teil, der nur von einem Thread gleichzeitig ausgeführt werden darf, heißt kritischer Abschnitt und wird geschützt, indem vor dem Eintritt eine Sperre erworben und beim Verlassen freigegeben wird. Je länger der kritische Abschnitt, desto länger warten andere Threads; grundsätzlich wird er daher möglichst kurz gehalten.

Dieses Thema üben Zur Themenseite

Weitere Fragen zu Multicore und Synchronisation

  1. Welche Aussage zur in parallelen Programmen verwendeten Barrierensynchronisation ist richtig?
  2. 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?
  3. Welche Aussage zu NUMA-Systemen (Non-Uniform Memory Access) ist richtig?
  4. Was ist bei der unter Linux in NUMA-Systemen häufig verwendeten First-Touch-Strategie (die Seite wird im Speicher des Knotens abgelegt, auf dem der Thread läuft, der sie als Erster beschreibt) zu beachten?
  5. Was trifft nicht als Ursache zu, dass die Leistung eines parallelen Programms bei mehr Kernen nicht wie erwartet steigt?

Vergleiche zu diesem Thema