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?
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?
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.