对于复杂的并发程序来说,死锁是个让人头疼的问题。本文提出的是一种亡羊补牢的方法:当程序运行发现异常时,通过gdb查看程序的运行状态,从而发现和定位隐藏错误——比如死锁。 先故意写一段会导致死锁的代码: ===========================代码的分隔线========================================== #include <iostream> #include <unistd.h> #include <boost/thread.hpp> using namespace std; boost::mutex mtx; boost::mutex mtx2; void run() { boost::mutex::scoped_lock lock(mtx); sleep(1); { boost::mutex::scoped_lock lock(mtx2);