Gegeben sind zwei Tasks und mit folgenden kritischen Sektionen: und . Task startet zuerst ohne aktuelle Konkurrenz. Bei der Anforderung der Ressource gibt es auch keine Probleme, da sowohl die Ressource noch frei als auch keine anderen Semaphoren belegt sind. Während der Nutzung von Semaphor tritt Task auf. Da er in seiner nichtkritischen Sektion keine Ressource beansprucht und eine höhere nominelle Priorität als die von Task besitzt, wird Task in seiner Ausführung unterbrochen (preempted). Wenn Task dann zu seiner kritischen Sektion mit Semaphor kommt, wird jetzt aber das neue PC-Protokoll wirksam: Obgleich die Ressource Semaphor momentan noch ungenutzt ist, muß der anfragende Task eine höhere Priorität besitzen, als den Ceilingwert des aktuell schon genutzten Semaphors mit höchstem Wert; dies ist aktuell Semaphor mit . Da Task auch nur eine Priorität von 1 hat, kann er den Semaphor nicht belegen. Er muß warten. Er wird von Task blockiert. Task kann seine Bearbeitung von Semaphor fortsetzen. Wenn Task dann zu seiner kritischen Sektion mit Semaphor gelangt, tritt wieder das PC-Protokoll in Kraft: um Semaphor benutzen zu können, muß er eine höhere Priorität haben als ein Semaphor, der von einem anderen Task benutzt wird. Da aktuell kein anderer Task einen anderen Semaphor benutzt hat Task eine hinreichende Priorität, also kann er auch den Semaphor kontrollieren, zu Ende ausführen, und dann seine kritische Sektion mit Semaphor abschließen. Mit Freigabe von Semaphor kann Task seine Arbeit fortsetzen. Jetzt bekommt er die Kontrolle über Semaphor , kann den kritischen Kodeabschnitt ausführen, kann mit mit Semaphor fortsetzen und dann mit Semaphor abschließen. Ein Deadlock tritt nicht auf.
Gerd Doeben-Henisch 2013-01-16