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

不言
Freigeben: 2018-09-11 16:28:05
Original
1019 Leute haben es durchsucht

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)
Nach dem Login kopieren

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)
Nach dem Login kopieren

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!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage