Heim > Backend-Entwicklung > Python-Tutorial > Gemeinsame Variablen und thread.Lock

Gemeinsame Variablen und thread.Lock

WBOY
Freigeben: 2024-02-05 22:27:10
nach vorne
1108 Leute haben es durchsucht

Gemeinsame Variablen und thread.Lock

Frageninhalt

In Java kann der Wert einer gemeinsam genutzten Variablen in einem Thread hängen bleiben, es sei denn, Sie verwenden atomare Operationen oder andere Thread-Synchronisierungsmechanismen.

Angesichts der GIL in CPython. Ich sehe einen Wert in Lock Inc., wo: Selbst in der verwirrenden Redewendung a += 1 müssen mehrere Schritte ausgeführt werden, bevor ein Wert zugewiesen wird. Um Rennbedingungen zu verhindern.

Aber in einem Fall wie a = 1 gibt es kein Schloss. Ist es möglich, dass die Threads A und B unterschiedliche Werte von a lesen, nachdem ein Thread a aktualisiert hat?

Eine andere Möglichkeit, diese Frage zu stellen, ist: Stellt Lock die Weitergabe gemeinsamer Werte sicher, während das Fehlen von Lock dies nicht tut?


Richtige Antwort


Das Problem ist nicht a = 1。如果您在整个代码中所做的唯一一件事是将 a. Wenn das Einzige, was Sie in Ihrem gesamten Code tun, darin besteht, a auf verschiedene Werte zu setzen, dann brauchen Sie keine Sperre.

Wenn Sie jedoch a = 1 的同时,代码中的其他地方正在执行 a = a + 1,那么您需要锁定它们。您锁定了 a = 1,这样如果其他人递增 a,它将完全在您设置 a einstellen, während an anderer Stelle in Ihrem Code a = a + 1 ausgeführt wird, müssen Sie sie sperren. Sie sperren

, sodass, wenn jemand anderes a erhöht, dies genau vor oder nach dem Festlegen von a geschieht.

In fast allen Fällen ist ein Schloss die einfachste Lösung, es sei denn, Sie wissen wirklich, was Sie tun. 🎜

Das obige ist der detaillierte Inhalt vonGemeinsame Variablen und thread.Lock. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:stackoverflow.com
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