我知道英特尔的 TBB 中存在类似的模板,除此之外我在 google 或 Boost 库中找不到任何实现。
您可以在 boost 中找到有关此功能实现的讨论:http://lists.boost.org/Archives/boost/2008/11/144803.php http://lists.boost.org/Archives/boost/2008/11/144803.php
> N2427 - C++ 原子类型和操作可以实现吗
> 没有编译器的帮助?
No.
如果您可以编写内联汇编程序(或单独编译的汇编程序),则它们不需要是内在函数
这很重要)然后你可以写
直接自己操作。你
甚至可以使用简单的 C++
(例如,只是简单的负载分配
或商店)。你需要的理由
编译器支持正在阻止
不适当的优化:原子
操作无法优化,并且
一般不得重新排序
在任何其他操作之前或之后。
这意味着即使是非原子
在原子之前执行的存储
商店必须完整,并且不能
缓存在寄存器中(例如)。
此外,负载发生后
原子操作无法提升
在原子操作之前。一些
编译器,仅使用内联汇编器
足够。在其他方面,调用
外部功能就足够了。 MSVC
提供
_ReadWriteBarrier() 提供编译器排序。其他编译器
需要其他标志。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)