本文用一个「双线程、双互斥锁、加锁顺序相反」的最小示例,演示如何用 gdb attach 定位程序死锁。死锁是并发编程里最棘手的问题之一,通过这个例子可以掌握一套通用的分析思路:先看线程与栈回溯(backtrace),再顺着栈找到等待的锁,
2020-09-13