互斥锁的改进

Posted monsterhy123

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了互斥锁的改进相关的知识,希望对你有一定的参考价值。

 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

 

以上是关于互斥锁的改进的主要内容,如果未能解决你的问题,请参考以下文章

java中ReentrantReadWriteLock读写锁的使用

Java并发入门之互斥锁-解决原子性问题

使用互斥锁的正确方法

信号量与互斥锁的区别

多线程的互斥锁的运用

带有 pthread 和互斥锁的 OpenCV