互斥锁的改进

 1 import time
 2 from threading import Thread,Lock
 3 #定义全局变量num
 4 num=0
 5 #创建一把互斥锁
 6 lock = Lock()
 7 def test1():
 8     global num
 9     '''
10     在两个线程中都调用上锁的方法,则这两个线程就会抢着上锁,
11     如果有1方成功上锁,那么导致另外一方会堵塞(一直等待)直到这个锁被解开
12     '''
13     for i in range(100000):
14         lock.acquire()#上锁
15         num+=1
16         lock.release() 
17     print('test1输出num:',num)
18 
19 def test2():
20     global num
21     for i in range(100000):
22         lock.acquire()  # 上锁
23         num+=1
24         lock.release()
25     print('test2输出num:',num)
26 
27 if __name__=='__main__':
28     t1 = Thread(target=test1)
29     t2 = Thread(target=test2)
30     t1.start()
31     t2.start()
32     t1.join()
33     t2.join()
1 test1输出num:181043
2 test2输出num:200000

 

posted @ 2020-04-11 22:46  小他_W  阅读(135)  评论(0编辑  收藏  举报