Heim  >  Artikel  >  Java  >  Java – Konzept von Semaphoren und Ähnlichkeiten und Unterschieden zwischen Sperren und Semaphoren

Java – Konzept von Semaphoren und Ähnlichkeiten und Unterschieden zwischen Sperren und Semaphoren

php是最好的语言
php是最好的语言Original
2018-08-06 16:32:024355Durchsuche

  • Semaphor

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.       

Java – Konzept von Semaphoren und Ähnlichkeiten und Unterschieden zwischen Sperren und Semaphoren

Es kann nur ein zulässiges Semaphor verwendet werden, um eine sich gegenseitig ausschließende Sperre zu simulieren.

Java – Konzept von Semaphoren und Ähnlichkeiten und Unterschieden zwischen Sperren und Semaphoren

Beispiel:

                                                                                     Wo?

(Die Sperre bezieht sich hier auf eine Mutex-Sperre)

Java – Konzept von Semaphoren und Ähnlichkeiten und Unterschieden zwischen Sperren und Semaphoren

Unterschied:

Geltungsbereich

Semaphor: Inter-Prozess oder Inter-Thread
  1. 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.
  1. 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.
  1. 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.

Mit anderen Worten, das Semaphor sperrt nicht unbedingt eine bestimmte Ressource, sondern ein Prozesskonzept. Beispiel: Es gibt zwei Threads A und B, und Thread B muss auf Thread warten A. Nach einer bestimmten Aufgabe können Sie die folgenden Schritte ausführen. Diese Aufgabe umfasst nicht unbedingt das Sperren einer bestimmten Ressource, sondern kann auch einige Berechnungen oder Datenverarbeitungen durchführen. Der Thread-Mutex ist das Konzept des „Sperrens einer bestimmten Ressource“. Während des Sperrzeitraums können andere Threads die geschützten Daten nicht bearbeiten. In manchen Fällen können die beiden vertauscht werden

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

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn