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

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

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 8月4日
  • 创建了问题 7月29日

悬赏问题

  • ¥15 变数的长度不一样”。是什么原因呢?如何修改?
  • ¥15 matlab作业不会写
  • ¥15 vue2(标签-chrome|关键词-浏览器兼容)
  • ¥15 python网络流自动生成系统 医学领域
  • ¥15 sql查询仓库里都有什么
  • ¥15 代码的修改,添加和运行完善
  • ¥15 krpano-场景分组和自定义地图分组
  • ¥15 lammps Gpu加速出错
  • ¥15 关于PLUS模型中kapaa值的问题
  • ¥15 关于博途V17进行仿真时无法建立连接问题