线程安全测试

时间:2011-06-20 17:21:15

标签: c++ unit-testing thread-safety

我目前使用googles'gtest来编写我的单元测试,但它看起来不像是可以测试线程安全性(即,从多个线程访问某些内容并确保其根据规范运行)。

您使用什么来测试线程安全性?我喜欢跨平台的东西,但它绝对必须在Windows上运行。

谢谢!

1 个答案:

答案 0 :(得分:1)

如果多线程代码没有立即显然可证明是正确的,那么它几乎肯定是错误的。如果是的话,你不需要测试它。

严重的是:共享的可变状态应该是非常本地化和罕见的,并且执行它的类应该是明确正确的。

您的线程通常应通过安全原语(例如,线程安全的工作队列)进行交互。如果您的代码周围散布着大量数据结构,每个数据结构都有自己的锁定策略,那么您的代码几乎肯定包含死锁和竞争条件。一项重大的测试工作只能找到一些问题。