【发布时间】:2013-03-20 00:25:21
【问题描述】:
我的问题范围严格限于同时读取和写入内存中的地址以及硬件中发生的情况。
我对了解竞争条件以及在程序继续执行后它们可能携带什么不感兴趣,方法是使用发生竞争的值。如果 pc 的逻辑被破坏,是的,它们也可能会导致崩溃,但这里我的问题完全是关于硬件和同时线程中 WRITE+READ 的影响。
问题:假设我从一个线程写入一个变量,并从另一个线程读取相同的变量。会发生什么?
- 只是破坏变量的值,这样所有后续线程都会读取 由于此读/写交错导致的错误值?
或
- 在某些情况下,也可能导致应用出现故障,因为在某些情况下这可能是某种硬件违规。
本质上,我想更多地了解同时物理读取和写入变量的过程以及 PC 的行为。
我正在使用 LINUX 和 C++,我对 2 个案例感兴趣
同一物理内核上的 2 个线程
2 个独立内核上的 2 个线程
【问题讨论】:
-
什么平台?什么大小变量?您是指在不同的物理内核上运行的线程,还是在同一个内核上运行的线程?
-
我正在使用 LINUX 和 C++,具体而言,我对 2 个案例感兴趣。 A.线程在同一个核心。 B. 不同核心中的线程。数据是 C++ 布尔值、整数和双精度值。
-
嗯,在同一个物理内核上运行的两个线程不能同时访问内存,因为它们不会同时运行;)
标签: multithreading hardware race-condition