C ++ 0x原子模板实现

时间:2009-02-07 14:16:03

标签: c++ synchronization c++11

我知道英特尔的TBB中存在类似的模板,除了我在谷歌或Boost库中找不到任何实现。

1 个答案:

答案 0 :(得分:14)

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

  

>可以实现N2427 - C ++原子类型和操作

     

>没有编译器的帮助?

     

没有。

     

如果您可以编写内联汇编程序(或单独编译的汇编程序),则它们不需要是内在函数   那件事)那你就可以写了   直接操作本身。您   甚至可以使用简单的C ++   (例如,只是简单的负载分配   或商店)。你需要的原因   编译器支持正在阻止   不恰当的优化:原子   操作无法优化,并且   一般不得重新订购   在任何其他操作之前或之后。   这意味着即使是非原子的   在原子之前执行的商店   商店必须完整,而不能   被缓存在寄存器中(例如)。   此外,在之后发生的负载   原子操作无法悬挂   在原子运动之前。一些   编译器,只使用内联汇编程序   足够。在其他人,称呼   外部功能就足够了。 MSVC   提供   _ReadWriteBarrier()提供编译器排序。其他编译器   需要其他旗帜。