【发布时间】:2010-09-05 19:30:30
【问题描述】:
我们有一个已有数年历史的代码库,所有最初的开发人员早已不复存在。它使用了很多很多线程,但没有明显的设计或共同的架构原则。每个开发人员都有自己的多线程编程风格,因此一些线程使用队列相互通信,一些使用互斥锁锁定数据,一些使用信号量锁定,一些使用操作系统 IPC 机制进行进程内通信。没有设计文档,而且 cmets 很稀疏。这是一团糟,似乎每当我们尝试重构代码或添加新功能时,都会引入死锁或其他问题。
那么,有没有人知道任何有助于分析和记录线程之间所有交互的工具或技术? FWIW,代码库是 Linux 上的 C++,但我有兴趣了解其他环境的工具。
更新
我很欣赏迄今为止收到的回复,但我希望得到比“添加日志消息、找出发生的情况并修复它”的建议更复杂或更系统的内容。有很多工具可以用来分析和记录单线程程序中的控制流。多线程程序没有可用的东西吗?
【问题讨论】:
标签: multithreading concurrency