tjyuanxi
2021-07-29 10:54
采纳率: 50%
浏览 164
已结题

pjsip 呼出后,马上挂断,出现死锁deadlock ,为什么?

我正在使用pjsip2.10搞视频电话。我发现一个问题,在向外拨打电话后,马上点击挂断,会报soft deadlock。 看了下代码挂断的时候会调用acquired_call 去循环请求锁,直到2s超时再返回错,也就是2s都没有等到锁。但是很奇怪的时,如果不是马上挂断,等几百毫秒去挂断就可以正常挂断,相同的线程,相同的操作。
之前我怀疑是因为我下发挂断线程是主线程的原因,于是我采用异步调用std::async 去挂断还是会死锁,这里的异步调用我是根本就没等他返回,而是让std::async 自己去执行,这样排除是线程互相获取锁的因素。
下面是我的日志:

img

img

img

img

img

img

  • 点赞
  • 收藏

2条回答 默认 最新

  • 王大师王文峰 2021-07-29 14:51

    出现死锁deadlock就是两个或两个以上的线程在执行过程中
    由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,
    若无外力作用,它们都将无法推进下去。此时处于死锁状态或系统产生了死锁

    点赞 打赏 评论
  • aasqws 2021-08-03 12:34

    不知道

    点赞 打赏 评论

相关推荐 更多相似问题