Heim  >  Artikel  >  Backend-Entwicklung  >  Einführung in Semaphore und begrenzte Semaphore unter Python-Threads

Einführung in Semaphore und begrenzte Semaphore unter Python-Threads

不言
不言Original
2018-09-11 16:28:051014Durchsuche

Dieser Artikel bietet Ihnen eine Einführung in Semaphore und begrenzte Semaphore unter Python-Threads. Ich hoffe, dass er für Freunde hilfreich ist.

Semaphor und begrenztes Semaphor

Semaphor ist ein zählerbasiertes Synchronisationsprimitiv. Bei jedem Aufruf der Methode „acquire()“ wird der Zähler um 1 verringert, und bei jedem Aufruf von „release()“ wird der Zähler um 1 verringert )-Methode wird dieser Zähler um 1 erhöht. Wenn der Zähler 0 ist, blockiert die acquire()-Methode, bis ein anderer Thread die release()-Methode aufruft.

Semaphor

Syntax:
s=Semqphore(value)

Erstellen Sie ein neues Semaphor. value ist der Anfangswert des Zählers. Wenn der Wert weggelassen wird, wird er standardmäßig auf 1 gesetzt

Gemeinsame Methoden:

s.acquire(blocking): Semaphor abrufen. Wenn der interne Zähler größer als 0 ist, verringert diese Methode seinen Wert um 1.
Dann kehren Sie sofort zurück. Wenn der Wert 0 ist, blockiert diese Methode, bis ein anderer Thread die Methode release() aufruft.
Der Blockierungsparameter verhält sich wie für Lock- und RLock-Objekte beschrieben.

s.release(): Gibt ein Semaphor frei, indem 1 zum internen Zähler addiert wird.
Wenn der Zähler 0 ist und ein anderer Thread wartet, wird der Thread geweckt.
Wenn mehrere Threads warten, kann nur einer von seinem acquire()-Aufruf zurückgegeben werden und die Reihenfolge ist undefiniert.

Begrenztes Semaphor

Syntax:
bs=BoundedSemaphore(value)

Erstellt ein neues begrenztes Semaphor. value ist der Anfangswert des Zählers. Wenn er weggelassen wird, wird er standardmäßig auf 1 gesetzt.

Der Unterschied zwischen einem Semaphor und einem begrenzten Semaphor

BoundedSemaphore funktioniert genauso wie Semaphore, aber release( ) Die Anzahl der Operationen darf die Anzahl der acquire()-Operationen nicht überschreiten.

Subtile Unterschiede zwischen Semaphoren und Mutexes

Semaphoren können zum Senden von Signalen verwendet werden. Beispielsweise können die Methoden „acquire()“ und „release()“ von verschiedenen Threads aufgerufen werden, um zwischen den Producer- und Consumer-Threads zu kommunizieren.

Verwandte Empfehlungen:

Detaillierte Erläuterung der Verwendung von Semaphoren in Python3.X-Threads

Python-Semaphor Was ist das? ? (ausführliche Beispiele)

Das obige ist der detaillierte Inhalt vonEinführung in Semaphore und begrenzte Semaphore unter Python-Threads. 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