如何使用经典编译器使用std :: atomic或boost :: atomic?

时间:2017-01-17 19:58:42

标签: c++ c++builder

我目前正在使用C ++ Builder 10.1.2中的一个中型项目,我很遗憾地将其绑定到BCC32 经典编译器(主要是出于可靠性和速度原因)。

对于某些后台解析,如果我可以使用 C ++ 11 std::atomic会很好,但经典编译器不能那。即使boost::atomic也不可用,因为只能为BCC32安装 boost V.1.39,它没有内置boost::atomic

因此...

  • 是否有可能在经典编译器中使用较新的 boost 版本?

  • 是否有... ::atomic的替代方法(除了互斥锁包装的普通变量)?

1 个答案:

答案 0 :(得分:1)

如果您有权访问程序集,则可以自己实现无锁std::atomic。只需找出CPU的相应汇编指令并对其进行编码。这样做的简单方法是使用CPU上的现代编译器使用std::atomic编译一些测试代码,并查看生成的ASM。当然,它将取决于CPU,您将使用可移植性。

如果您的编译器不允许您使用ASM或者您不想将自己与特定CPU结合,则可以依赖OS提供的API - * nix和Windows都具有原子功能系列。