假设您有两个线程,一个创建 TSX 事务,并修改一些数据结构。另一个线程不进行任何类型的同步并读取相同的数据结构。事务对它来说是原子的吗?我实际上无法想象这可能是真的,因为如果它尝试读取由事务修改的缓存行,则无法阻止或重新启动它。
如果事务不是原子的,那么 x86 上的写入顺序规则是否仍然受到尊重?如果它看到了写#2,那么保证它必须能够看到之前的写#1。这仍然适用于作为事务的一部分发生的写入吗?
我在任何地方都找不到这些问题的答案,而且我有点怀疑 SO 上的任何人都会知道,但至少当有人发现这是一个谷歌友好的地方来提供答案时。