Une condition de concurrence critique en Python fait référence à ce qui se produit lorsque deux ou plusieurs threads ou processus tentent d'accéder et de modifier la même ressource partagée en même temps. Le comportement du programme dépend de leur timing d'exécution.
Cause : Manque de mécanisme de synchronisation approprié.
Impact : provoque des résultats imprévisibles ou incorrects lorsque les threads « se précipitent » pour terminer leurs opérations en premier.
Exemple :
counter = 0 def increment(): global counter for _ in range(1000): counter += 1 # 此处不是线程安全的 thread1 = threading.Thread(target=increment) thread2 = threading.Thread(target=increment) thread1.start() thread2.start() thread1.join() thread2.join() print(counter) # 输出可能会有所不同,并且小于 2000
Lock
ou RLock
) pour garantir qu'un seul thread accède à la section critique à la fois. import threading counter = 0 lock = threading.Lock() def increment(): global counter for _ in range(1000): with lock: # 确保一次只有一个线程访问此代码块 counter += 1 thread1 = threading.Thread(target=increment) thread2 = threading.Thread(target=increment) thread1.start() thread2.start() thread1.join() thread2.join() print(counter) # 输出将始终为 2000
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!