我的问题范围严格限于同时读取和写入内存中的地址以及硬件中发生的情况。
我对了解竞态条件以及在程序继续执行后它们可能携带的内容不感兴趣,方法是使用发生竞态的值。如果 pc 的逻辑被破坏,是的,它们也可能会导致崩溃,但这里我的问题完全是关于硬件和同时线程中 WRITE+READ 的影响。
问题:假设我从一个线程写入一个变量,并从另一个线程读取相同的变量。会发生什么?
- 只是破坏了变量的值,因此所有后续线程都会由于此读/写的交错而读取错误的值?
或者
- 在某些情况下,也可能导致应用程序关闭,因为在某些情况下这可能是某种硬件违规。
本质上,我想更多地了解同时物理读取和写入变量的过程以及 PC 的行为。
我正在使用 LINUX 和 C++,我对 2 个案例感兴趣
同一物理内核上的 2 个线程
2 个独立内核上的 2 个线程