【发布时间】:2024-11-10 16:10:01
【问题描述】:
正如我们在 x86 架构上所知道的那样,自动提供的获取-发布一致性 - 即所有操作自动排序,没有任何栅栏,不包括第一次存储和下一次加载操作。 (正如第 34 页 Herb Sutter 所说:https://onedrive.live.com/view.aspx?resid=4E86B0CF20EF15AD!24884&app=WordPdf&authkey=!AMtj_EflYn2507c)
如果我们把 MFENCE(LFENCE+SFENCE) 放在它们之间,那么 store 就不能重新排序,load 也不能重新排序 - 即 我们提供了顺序一致性 .
但是如果我们将内存标记为WC(Write Combined),那么我们是否有任何没有任何栅栏的自动一致性,可能是acquire-release?
或者如果我们对 WC-memory 使用 SSE 指令,那么我们没有任何一致性,如果我们对 WC-memory 使用简单的 MOV 指令,那么我们有获取-发布一致性,不是吗?
【问题讨论】:
标签: multithreading concurrency x86 x86-64 memory-fences