子线程之间共享全局变量,就会形成资源的争抢问题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