【问题标题】:C++0x atomic template implementationC++0x 原子模板实现
【发布时间】:2010-10-06 03:32:06
【问题描述】:

我知道英特尔的 TBB 中存在类似的模板,此外我在 google 或 Boost 库中找不到任何实现。

【问题讨论】:

    标签: c++ synchronization c++11


    【解决方案1】:

    您可以在 boost 中找到有关此功能实现的讨论:http://lists.boost.org/Archives/boost/2008/11/144803.php

    > 能否实现 N2427 - C++ 原子类型和操作

    > 没有编译器的帮助?

    没有。

    如果您可以编写内联汇编程序(或单独编译的汇编程序 那件事)那么你可以写 直接自己操作。你 甚至可以使用简单的 C++ (例如,只是简单的负载分配 或商店)。你需要的理由 编译器支持正在阻止 不适当的优化:原子 无法优化操作,并且 一般不得重新排序 在任何其他操作之前或之后。 这意味着即使是非原子的 在原子之前执行的存储 商店必须是完整的,不能 缓存在寄存器中(例如)。 此外,负载发生后 原子操作不能吊 在原子操作之前。一些 编译器,只使用内联汇编 足够的。在其他人身上,调用 外部功能就足够了。 MSVC 提供 _ReadWriteBarrier() 提供编译器排序。其他编译器 需要其他标志。

    【讨论】:

      猜你喜欢
      • 2011-01-26
      • 1970-01-01
      • 1970-01-01
      • 2011-03-08
      • 1970-01-01
      • 1970-01-01
      • 2011-12-30
      • 2011-08-22
      • 1970-01-01
      相关资源
      最近更新 更多