dar*_*nir 7 c concurrency multithreading race-condition
我目前正在开展一个大型项目,该项目最近有很多变化,最突出的是增加了线程支持.
在查看代码时,我已经确定了可能会导致竞争条件的部分,如果不是现在,那么将来某个时候.为了防止这种回归,我想编写一个能够可靠地检测该特定区域中的竞争条件的测试,以确保未来的提交不会导致此故障.
代码没有乱七八糟的语句,但是潜在的死锁和竞争雷区,我想确保稳健性.
这个项目完全用C编写.那么,我是否还要编写单元测试以防止竞争条件?
竞争条件本质上是非决定论的结果。如果您无法确保调用序列是安全的,则引入许多运行时检查来验证协议不变量是否得到遵守。这样,至少无论何时发生故障,您都会有证据。
虽然这不能解决您的问题,但它至少为您提供了一个量化问题严重程度的工具。
如果任何竞争是由应用程序范围之外的事件触发的,则任何静态分析都需要对其进行建模,以便能够检测条件。