我知道竞争条件存在风险,并且写入或读取的值可能已损坏。我处于一种情况,我在布尔和整数以及几个类实例上进行比赛。
除了数据无效之外,这是否会导致程序崩溃或对我的程序产生任何其他恶劣影响?我最担心的是什么?
我的程序有2个版本是调试版,另一个版本有很多优化选项。当它投入生产时,我担心这最后一个。
答案 0 :(得分:3)
data not being valid
可能会导致任何(即您调用未定义的行为)。因此,考虑到这一点,您的应用程序可能会崩溃,泄漏内存,格式化硬盘驱动器以及其他任何内容。
答案 1 :(得分:0)
这会导致程序崩溃吗
取决于正在竞争的资源,但是是的。如果一个线程抓取资源而另一个线程需要它继续进行,那么你可能会得到未定义的行为甚至程序崩溃。
除了数据无效之外,我的程序还有其他任何令人讨厌的影响吗?
除了无效数据(因此实际上是无用的程序)之外,您还可能容易出现死锁。
竞争条件wikipedia article是查找问题答案的好地方。