死锁问题:
“在持有订阅者容器互斥量时同步调用回调”,导致线程间互相等待/死锁的问题:
gdb: 显示多个线程卡在 pthread_mutex_lock(lll_lock_wait),且处理中间件消息的线程正在执行 JSON 解析并通过 handleServerRecevice/ev_handle 发布/处理消息——这会触发 LocalPublisher::_post,原实现是在持锁情况下直接调用 deliverMessage,回调内部可能再次触发发布/访问同一容器,从而形成循环等待。
如何解决:先在临界区内拷贝订阅者指针到临时 vector,释放锁后再逐个调用 deliverMessage,最终再调用 md_TopicPostMsg。这样避免在持锁时调用回调,能破除死锁链路。

被折叠的 条评论
为什么被折叠?



