Multicore und Synchronisation
Welche Aussage zum kritischen Abschnitt (Critical Section) ist richtig?
- ADer Programmteil, der gemeinsame Daten bearbeitet und daher nur von einem Thread gleichzeitig ausgeführt werden darf
- BDer Programmteil mit der längsten Laufzeit
- 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.