我有一打线程读取一个指针,而一个线程可能一个小时左右更改一次该指针。
读者是超级,超级,超级时间敏感的。我听说atomic<char**>
或进入主内存的速度有多快,我希望避免这种情况。
[在现代(例如,2012年及以后)服务器和高端台式机Intel中,如果读写正常,是否可以保证8字节对齐的常规指针不被撕裂?我的测试进行了一个小时,没有流泪。
否则,如果我以原子方式进行写入并且正常进行读取,会更好(或更糟)吗?例如,通过将两者结合起来?
请注意,还有其他有关混合原子操作和非原子操作的问题,这些问题未指定CPU,因此讨论演变为语言法律。这个问题与规范无关,而是确切会发生什么,包括我们是否知道未定义规范会发生什么。
我的《英特尔®64和IA-32架构软件开发人员手册》(2019年5月,第3卷,副本: