Question 3

Semaphoren

Eine Semaphore besteht im Wesentlichen aus zwei Komponenten:

  • einem Zähler und

  • einer Warteschlange für blockierte Threads.

📊 Der Zähler gibt an, wie viele Ressourcen aktuell verfügbar sind. Er wird zu Beginn mit der Anzahl verfügbarer Ressourcen initialisiert.

🧵 Möchte ein Thread eine Ressource nutzen:

  • Ist der Zähler größer als 0, wird er dekrementiert, und der Thread erhält Zugriff.

  • Ist der Zähler 0, wird der Thread in die Warteschlange eingereiht, bis wieder eine Ressource verfügbar ist.

🔒 Bei kritischen Abschnitten, in denen nur ein Thread gleichzeitig aktiv sein darf, wird die Semaphore mit einem Anfangswert von 1 initialisiert. Dies nennt man auch ein binäres Semaphor (vergleichbar mit einem Mutex).