"""
因为线程属于同一进程,因此他们之间共享内存区域
------------------全局变量是公共的
"""import threading
a =1deffunc():global a
a +=1
t1 = threading.Thread(target=func)
t1.start()
t1.join()print(a)
1.问题呈现
"""
共享内存间存在资源竞争问题
"""import threading
a =0
n =1000000deffunc1(n):global a
for i inrange(n):
a +=1deffunc2(n):global a
for i inrange(n):
a -=1
t1 = threading.Thread(target=func1, args=(n,))
t2 = threading.Thread(target=func2, args=(n,))
t1.start()
t2.start()
t1.join()
t2.join()print(a)# -130428
import threading
a =0
n =1000000
lock = threading.Lock()deffunc1(n):global a
for i inrange(n):
lock.acquire()# 锁
a +=1
lock.release()# 解锁deffunc2(n):global a
for i inrange(n):
lock.acquire()# 锁
a -=1
lock.release()# 解锁
t1 = threading.Thread(target=func1, args=(n,))
t2 = threading.Thread(target=func2, args=(n,))
t1.start()
t2.start()
t1.join()
t2.join()print(a)# 0