from threading import Thread
from threading import Lock
import time
#互斥锁的作用是用来避免全局变量被修改。
# 一方使用的时候。另外一方等一方使用完了再使用,不然全局变量大家都在用,最后数据就会出错
g_num=0
mutex=Lock() #创建一把互斥锁,互斥锁默认是开锁状态
def test1():
#这个线程和test2线程都在抢着上锁,如果谁抢到了就上锁成功开始执行。
# 而另一方就上锁失败发生堵塞(一直等待)直到这个锁被抢到的人用完了释放为止
global g_num
mutex.acquire() #上锁
for i in range(100000):
g_num+=1
mutex.release() #释放锁,释放之后,堵塞的线程检测到锁被释放就会抢着上锁,进而执行
print("--test1--g_num=%d"%g_num)
def test2():
global g_num
mutex.acquire() #上锁
for i in range(100000):
g_num+=1
mutex.release() #释放锁
print("--test1--g_num=%d" % g_num)
th=Thread(target=test1) #初始化线程。给test1申请资源
th.start() #启动线程
th1=Thread(target=test2)
th1.start()