Heim >Backend-Entwicklung >Python-Tutorial >Gemeinsame Variablen und thread.Lock
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?
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
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!