Maison  >  Article  >  développement back-end  >  Variables partagées et thread.Lock

Variables partagées et thread.Lock

WBOY
WBOYavant
2024-02-05 22:27:101044parcourir

Variables partagées et thread.Lock

Contenu de la question

En Java, la valeur d'une variable partagée dans un thread peut rester bloquée à moins que vous n'utilisiez des opérations atomiques ou d'autres mécanismes de synchronisation de thread.

Compte tenu du GIL dans CPython. Je vois de la valeur dans Lock inc où : Même dans l’expression déroutante du a += 1, plusieurs étapes sont effectuées avant d’attribuer une valeur. Pour éviter les conditions de course.

Mais dans un cas comme a = 1, il n'y a pas de verrou. Après qu'un thread ait mis à jour a, est-il possible que les threads A et B lisent des valeurs différentes de a ?

Une autre façon de poser cette question est la suivante : Lock assure-t-il la propagation des valeurs partagées, alors que l'absence de Lock ne le fait pas ?


Bonne réponse


Le problème n'est pas a = 1。如果您在整个代码中所做的唯一一件事是将 a. Si la seule chose que vous faites dans l'ensemble de votre code est de définir a sur différentes valeurs, alors vous n'avez pas besoin de verrou.

Cependant, si vous définissez a = 1 的同时,代码中的其他地方正在执行 a = a + 1,那么您需要锁定它们。您锁定了 a = 1,这样如果其他人递增 a,它将完全在您设置 a alors qu'ailleurs dans votre code, vous faites a = a + 1, alors vous devez les verrouiller. Vous verrouillez

de sorte que si quelqu'un d'autre incrémente a, cela se produira exactement avant ou après que vous ayez défini a.

Donc dans presque tous les cas, à moins de savoir vraiment ce que l'on fait, une serrure est la solution la plus simple. 🎜

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer