2011-06-20 52 views
2

我目前使用googles的gtest来编写我的单元测试,但它看起来并不像它可以测试线程安全(即从多个线程访问某些东西并确保其按照规范行事)。线程安全测试

你用什么来测试线程安全性?我希望跨平台的东西,但是,它绝对必须在Windows上工作。

谢谢!

+5

我不是MT专家,但我不认为你可以自动MT设计测试,整个事情是非确定性的。 –

+0

但应该可以检查某些“合同”。 –

+2

[多线程软件测试方法]的可能重复(http://stackoverflow.com/questions/2437763/testing-approach-for-multi-threaded-software) –

回答

1

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

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

您的线程通常应该通过安全基元进行交互(例如,线程安全的工作队列)。如果你的代码中有很多数据结构分散在你自己的锁定策略中,那么你的代码几乎肯定会包含死锁和竞争条件。大量的测试工作只会发现一些问题。