2016-11-03 1 views
0

Ich stolperte über ein Problem in einem Multithreading-Buch in der Bibliothek und ich fragte mich, was ich tun müsste, um die Anzahl der Semaphoren zu minimieren.Semaphore Minimierung

Was würden Sie in dieser Situation tun?

Semaphores

Antwort

0

Angenommen, ein Prozess P0 ‚s Ausführung auf andere k Prozesse abhängt: P1, ..., Pk. Sie benötigen einen Semaphor, um die Prozesse zu synchronisieren und diesen einzelnen Contrain zu erfüllen.

Die Semaphore S0 mit 0 initialisiert wird, während P0 werden versuchen k mal auf S0 warten (in anderen Worten, wird es versuchen, k Ressourcen zu erwerben).

Jede k Prozesse P1, ..., Pk wird loslassen S0 auf ihren Enden von Hinrichtungen.

garantieren Dies wird, dass P0 Ausführung beginnt erst, nachdem alle anderen k Prozesse ihre Ausführung abschließen (in beliebiger Reihenfolge und asynchron).

In der Verbindung, die Sie zur Verfügung gestellt haben, benötigen Sie 4 Semaphoren, T1 benötigt keine Semaphore, da ihre Ausführung von niemandem sonst abhängt.