【发布时间】:2020-05-14 10:12:57
【问题描述】:
我有一个工作的 C++ 应用程序,在不同的线程中使用相同的变量和对象,而不考虑后果。我想将应用程序改进为线程安全(使用mutex、atomic 等...) - 我如何测试我想要实现的东西是否真的有效? p>
我的意思是,如果没有这个,我的应用程序已经可以正常工作 - 但我很确定它只是因为可能的错误尚未发生,而不是因为我已经采取了措施来防止错误。
【问题讨论】:
-
您无法测试线程安全性。大多数不安全的操作都是未定义的行为,并且根据定义(UB)可能看起来有效。您只能设计线程安全。你可以通过测试证明代码不是线程安全的,但你永远无法通过测试证明代码是线程安全的。
-
之后升级到线程安全是困难的,有时如果不进行重大重新设计是不可能的。你应该从一开始就设计线程安全。
-
也没有简单的测试方法。使用可以对它们进行单元测试和构建的线程安全数据结构。
-
你需要分析器它以保证线程安全。
标签: c++ multithreading testing thread-safety