子線程之間共享全局變量,就會形成資源的爭搶問題python
問題:web
由於線程之間共享全局變量,因此,在多線程幾乎在同時運行的時候,幾乎同時修改同一全局變量的時候沒,就要進行控制安全
此時,須要互斥鎖多線程
當某個線程須要修改資源的時候,先將資源進行鎖定,其餘線程不能修改該線程併發
當線程修改完成以後,而且釋放完互斥鎖以後,其餘的線程才能夠使用svg
互斥鎖保證當前只有一個線程能夠使用修改同一個資源ui
import threading num = 0 def add_num1(): global num for i in range(10000000): lock.acquire(True) num += 1 lock.release() print('子線程1已經完成,此時獲得的num1',num) def add_num2(): global num for i in range(10000000): lock.acquire() num += 1 lock.release() print('子線程2已經完成,此時獲得的num2',num) if __name__ == '__main__': lock = threading.Lock() thread1=threading.Thread(target=add_num1) thread2=threading.Thread(target=add_num2) thread1.start() thread2.start()
注意點:spa
避免死鎖的方法:線程
from queue import Queuefrom