c++ - 线程安全测试

标签 c++ unit-testing thread-safety

我目前使用谷歌的 gtest 来编写我的单元测试,但它看起来不能测试线程安全(即从多个线程访问某些内容并确保其行为符合规范)。

你用什么来测试线程安全?我想要跨平台的东西,但是,它至少必须在 Windows 上运行。

谢谢!

最佳答案

如果多线程代码不能立即、明显地证明是正确的,那么它几乎肯定是错误的。如果是,则无需对其进行测试。

严肃地说:共享可变状态应该是极其本地化的和罕见的,并且执行它的类应该是可证明的正确的。

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

关于c++ - 线程安全测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6415003/

相关文章:

c++ - 基类指针可以指向派生类对象。为什么反之不成立?

c++ - 错误 :sorry, 未实现:在函数模板中使用 decltype 时,函数模板签名中存在字符串文字

Java - 使用 ConcurrentLinkedDeque 避免 NonSuchElementException

java - 我正在尝试了解java和多线程中的Singleton类

c# - System.DateTime.Year(及其其他属性)是如何实现的?

c++ - 名称查找和类范围

javascript - 使用 jasmine 模拟函数调用

asp.net-mvc - ASP.NET MVC 中单元测试的 "Size"

java - 从 Java 运行 Ruby 命令行应用程序

Java多线程: cheap operation to add object to List/Queue/Set