Zweck: Sie können Semaphoren verwenden, um die Anzahl der Threads zu begrenzen, die auf eine gemeinsam genutzte Ressource zugreifen
Bedeutung : Semaphoren beziehen sich auf Objekte, die den Zugriff auf gemeinsame Ressourcen steuern. Vor dem Zugriff auf die Ressource muss der Thread eine Berechtigung vom Semaphor einholen. Nach dem Zugriff auf die Ressource muss der Thread die Berechtigung an den Semaphor zurückgeben. Sobald die Berechtigung erhalten wurde, wird die Gesamtzahl der verfügbaren Berechtigungen im Semaphor um 1 reduziert. Sobald die Berechtigung freigegeben wurde, wird die Anzahl der Berechtigungen im Semaphor um 1 erhöht.
Es kann nur ein zulässiges Semaphor verwendet werden, um eine sich gegenseitig ausschließende Sperre zu simulieren.
Beispiel:
Wo?
(Die Sperre bezieht sich hier auf eine Mutex-Sperre)
Unterschied:Geltungsbereich
Semaphor: Inter-Prozess oder Inter-Thread
Mutex: Inter-Thread
Ausführung bei Sperre
Semaphor: Wenn der Wert des Semaphors > dann können andere Threads Aufgaben ausführen. Und nach erfolgreicher Ausführung, value--; wenn value=0, dann bewirkt Thread sem_wait, dass der Thread blockiert, bis value++ freigegeben wird, nachdem sem_post freigegeben wurde, und andere Threads können basierend auf value ausgeführt werden.
Mutex-Sperre: Nur ein Objekt ist gesperrt (gesperrt), dann kann kein anderer Thread auf das gesperrte Objekt zugreifen.
Das eine ist Synchronisation und das andere ist gegenseitiger Ausschluss
Semaphor: wird in mehreren verwendet -Threading Multitasking ist synchronisiert. Wenn ein Thread eine Aktion abschließt, teilt er anderen Threads über ein Semaphor mit, dass die anderen Threads bestimmte Aktionen ausführen.
Mutex-Sperre: Wird zum gegenseitigen Ausschluss von Multithreads und Multitasks verwendet. Nachdem ein Thread eine Ressource belegt hat, können andere Threads nicht darauf zugreifen. Nur wenn dieser Thread entsperrt ist, können andere Threads ihn verwenden.
. Verwandte Artikel:
Beispiele für Mutex-Semaphoren und Multi-Thread-Wartemechanismen in Java
Ausführliche Erklärung grundlegender Anwendungsbeispiele von PHP-Semaphoren
Das obige ist der detaillierte Inhalt vonJava – Konzept von Semaphoren und Ähnlichkeiten und Unterschieden zwischen Sperren und Semaphoren. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!