繁体   English   中英

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

[英]How to use std::atomic or boost::atomic with the classic compiler?

我目前正在C ++ Builder 10.1.2中从事一个中等规模的项目,不幸的是,我在其中与BCC32 经典编译器绑定(主要是出于可靠性和速度方面的考虑)。

对于某些背景解析,如果可以使用C ++ 11std::atomic会很好,但是经典的编译器无法做到这一点。 甚至boost::atomic都不可用,因为BCC32只能安装boost V.1.39,没有内置boost::atomic

所以...

  • 有可能在经典编译器中使用更新的boost版本吗?

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

您可以自己实现无锁std::atomic ,前提是您可以访问程序集。 只需找出适用于您的CPU的相应组装指令并将其编码即可。 简单的方法是在CPU上使用现代编译器使用std::atomic编译一些测试代码,并查看生成的ASM。 当然,这将取决于CPU,并且您将使用可移植性。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM