弄乱线程计时的工具?

tem*_*def 6 testing multithreading

我最近一直致力于一个多线程程序,它具有非常复杂的锁定不变量.我希望检查程序中是否存在死锁或竞争,但是典型的单元测试可能不会显示这一点,因为即使存在错误,线程计时可能恰好以导致测试通过的方式运行在代码中.

我很好奇是否有一个工具可以用三种方式混乱,允许测试多次运行,每次使用不同的线程以不同的顺序获得不同的时间片.这样的工具存在吗?或者是否有另一个好的工具可以使调试更容易?

这个程序是用C语言编写的,但我会用任何语言学习答案,因为我很好奇那里有什么,即使它不是直接适用于此.

Chr*_*s O 3

如果你使用的是Windows平台,那么微软研究院有他们的CHESS项目,目前只支持VS2008。