Barriers,字面意思为“壁垒,屏障,栅栏”,在计算机领域中 Barriers 也有它独特的含义,具体来讲,在并行程序中,Barriers 是一种同步的手段,可被视为一种线程同步原语,如一组线程/进程的 Barrier 可以用来同步该线程/进程组,只有当该线程/进程组中所有线程到达屏障点(可称之为同步点)时,整个程序才得以继续执行。如比较熟悉的 Memory Barriers(Wikipedia),Memory Barriers可翻译为内存屏障。由于现代绝大多数的CPU都采用流水线和乱序执行(out-of-order),一条指令的执行一般分为:取指,译码,访存,执行,写回的若干个阶段,多条指令可能同时存在与流水线中并同时被执行,由于CPU具备乱序执行,往往后取的指令被提前执行了,还有,在多处理器的条件下,CPU 可能共享 Cache,此时就会发生 Cache 不一致的情况,再加上编译器优化,问题就变得很复杂了,如何保证指令执行的一致性呢?内存屏障就发挥了很大作用。在 Linux 内核中,最简单的内存屏障原语是(更多有关内核屏障请参看文档):
#define barrier() __asm__ __volatile__("":::"memory")
讯享网

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/119658.html