这足以检测竞争条件吗?

pyt*_*nic 1 c linux gcc

假设我有一个多线程应用程序,我使用相同的输入运行它.是否足以检测每个加载和存储以检测写入和写入读取数据竞争?我的意思是从记录的加载和存储地址,如果我们可以看到哪个线程执行了哪个加载以及哪个线程执行哪个存储,我们可以通过注意重叠的地址来检测写入读取和写入写入数据.或者我错过了什么?

Emp*_*ian 5

或者我错过了什么?

丢失了很多.作为Pubby说,如果你看到阅读,然后在T1写,后来又读,然后在T2写的,你不能说任何关于缺席比赛.您需要了解所涉及的锁.

您可能希望使用工具,例如Google的ThreadSanitizer.

更新:

但我的方法是否涵盖所有种族或至少一些种族?

您在此处和其他答案中的评论似乎表明您不了解比赛是什么.

你的方法可能会暴露一些比赛,是的.保证不会覆盖大部分(这将使练习徒劳无功).