gpt4 book ai didi

c++ - 为什么内存障碍取决于变量?

转载 作者:行者123 更新时间:2023-12-02 10:06:09 25 4
gpt4 key购买 nike

在对内存屏障/栅栏的总体目的进行了一些研究之后,(至少我认为),我对它们的用途有了基本的了解。在研究期间,我专注于C++的抽象,因为障碍似乎是特定于硬件的,而C++是一种低级的但通用的语言。但是,标准库对内存屏障的抽象的语义中有一个细节,使我质疑对它们的理解。

关于C++内存屏障memory_order_acq_reldocumentation声明(其他屏障也类似):

All writes in other threads that release the same atomic variable are visible before the modification and the modification is visible in other threads that acquire the same atomic variable.



在处理器级别(因为没有相应的硬件限制就不会存在此限制):如果所有先前的更改都受到影响,为什么对特定变量的说明很重要?例如,必须以任何一种方式刷新缓存,不是吗?这种方法的主要优势是什么?

先感谢您。

最佳答案

使用原子变量作为控制内存障碍的手段只是C++为您提供这种控制的一种方式。 (可能是最常用的方法,我可能会补充。)

您虽然不需要使用它们。

您可以调用诸如std::atomic_thread_fencestd::atomic_signal_fence之类的函数,这些函数无需任何关联变量即可实现内存屏障语义。

关于c++ - 为什么内存障碍取决于变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60119536/

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