gpt4 book ai didi

concurrency - 什么是内存栅栏?

转载 作者:行者123 更新时间:2023-12-03 04:42:39 25 4
gpt4 key购买 nike

使用显式内存栅栏是什么意思?

最佳答案

为了提高性能,现代 CPU 通常会乱序执行指令,以最大限度地利用可用芯片(包括内存读/写)。由于硬件强制执行指令完整性,因此您在单个执行线程中永远不会注意到这一点。然而,对于多线程或具有 volatile 内存的环境(例如内存映射 I/O),这可能会导致不可预测的行为。

内存栅栏/屏障是一类指令,意味着内存读/写按照您期望的顺序发生。例如,“完整栅栏”意味着栅栏之前的所有读/写都在栅栏之后的读/写之前提交。

注意内存栅栏是一个硬件概念。在高级语言中,我们习惯于处理互斥体和信号量 - 这些很可能使用低级内存栅栏来实现,并且不需要显式使用内存屏障。使用内存屏障需要仔细研究硬件架构,并且在设备驱动程序中比应用程序代码更常见。

CPU 重新排序与编译器优化不同 - 尽管结果可能相似。如果这可能导致不良行为(例如在 C 中使用 volatile 关键字),您需要采取单独的措施来阻止编译器对指令重新排序。

关于concurrency - 什么是内存栅栏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/286629/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com