当前位置:   article > 正文

多线程共同使用一个锁引发的死锁问题_两个线程都在等同一把锁

两个线程都在等同一把锁

今天大神同事遇到一个问题,如下:

如果两个线程共用一个线程锁,在A线程里面申请两次这个锁,B线程里释放一次,那么程序会正常运行吗,还是会阻塞在某个地方?


场景1:时间片竞争,各线程对锁的操作先后顺序未知

[root@zxx ~/testcode]$./pthreadlock 
thread two count value is 1
unlock thread two count value is 1
thread one count value is 1
lock1 thread one count value is 2

测试结果如上所示:线程二先释放锁,线程1申请锁成功,但是由于一直没有释放,因此在第二次申请锁的地方等待


场景2:通过sleep让线程1先申请锁,线程二再释放

[root@zxx ~/testcode]$./pthreadlock 
thread one count value is 1
lock1 thread one count value is 2
thread two count value is 2
unlock thread two count value is 2
lock2 thread one count value is 3

可以看到线程1先上锁了,紧接着线程2释放锁,线程1又申请锁,奇怪的是代码并没有在此等待锁的再次释放,正常执行完退出了。


声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/721070
推荐阅读
相关标签
  

闽ICP备14008679号