Lernziele
In dieser Aufgabe …
- vertiefen die Studierenden ihr Verständnis von Lock-Objekten durch praktische Implementierung.
- erkennen die Studierenden die Bedeutung kritischer Abschnitte im Beispiel.
Der folgende C-Code zeigt eine fehlerhafte und unvollständige Implementierung der acquire- und release-Operationen für eine Lockvariable Lock.
// Lockvariable
typedef unsigned char Lock;
// Kritischen Abschnitt betreten
void acquire(Lock *lock) {
while (*lock);
*lock = 1;
}
// Kritischen Abschnitt verlassen
void release(Lock *lock) {
// hier ergänzen
}Diese Aufgabe war Teil der Klausur im Sommersemester 2024 (Zweittermin).
Level 3: Anwenden
An welcher Stelle im Code kann ein Problem auftreten und welche Folgen kann dies haben? Geben Sie die betroffene(n) Zeilennummer(n) mit an.
acquire selbst ist ein kritischer Abschnitt, wird aber nicht entsprechend geschütztLevel 3: Anwenden
Ergänzen Sie die Implementierung der release-Funktion in Zeile 12 so, dass das Lock korrekt freigegeben wird.
*lock = 0;
In dieser Aufgabe …