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

Gemeinsame Variablen und thread.Lock

WBOY
WBOYnach vorne
2024-02-05 22:27:101084Durchsuche

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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:stackoverflow.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen