c/c++语言开发共享用户空间中的内存障碍? (Linux,x86-64)

在内核端很容易设置内存障碍:由于Linux内核头文件,宏mb,wmb,rmb等总是存在。

如何在用户端完成此操作?

    Posix 定义了许多函数作为内存屏障。 不得同时访问内存位置; 为了防止这种情况,请使用同步 – 并且同步也可以作为一个障碍。

    您正在寻找gcc的完整内存屏障primefaces内置。

    请注意我在这里提到的参考资料的详细说明,

    [following] builtins旨在与Intel Itanium处理器专用应用程序二进制接口第7.4节中描述的内容兼容。 因此,它们偏离了正常的GCC使用“__builtin_”前缀的做法,而且它们被重载使得它们可以在多种类型上工作。

    使用libatomic_ops。

    它不是特定于编译器的,并且比GCC的东西少。 它不是一个giganto库,提供了许多你不关心的function。 它只是提供primefaces操作。 此外,它可以移植到不同的CPU架构。

    Linux x64意味着您可以使用Intel内存屏障指令。 如果这些宏不适合您的代码或可访问,您可以将它们包装在类似于Linux头文件中的宏中

    GCC 4.4+中的__sync_synchronize()

    英特尔内存订购白皮书,英特尔64和IA-32手册第3A卷中的一节https://developer.intel.com/Assets/PDF/manual/253668.pdf

    Qprof分析库(与Qt无关)在其源代码中还包括primefaces操作库,包括内存屏障。 他们在许多编译器和架构上工作。 我在我的一个项目中使用它。

    只需借用为Linux内核定义的障碍,只需将这些宏添加到头文件中: http : //lxr.linux.no/#linux+v3.6.5/arch/x86/include/asm/barrier.h#L21 。 当然,在您的源代码中为Linux开发人员提供信誉。

    最近的Qt发行版的include/arch/qatomic_*.h标题包括许多架构的(LGPL)代码和各种内存障碍(获取,发布,两者)。

    需要了解更多c/c++开发分享用户空间中的内存障碍? (Linux,x86-64),也可以关注C/ C++技术分享栏目—计算机技术网(www.ctvol.com)!

      以上就是c/c++开发分享用户空间中的内存障碍? (Linux,x86-64)相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/c-cdevelopment/980689.html

      (0)
      上一篇 2021年12月14日
      下一篇 2021年12月14日

      精彩推荐