[英]How to use std::atomic or boost::atomic with the classic compiler?
我目前正在C ++ Builder 10.1.2中从事一个中等规模的项目,不幸的是,我在其中与BCC32 经典编译器绑定(主要是出于可靠性和速度方面的考虑)。
对于某些背景解析,如果可以使用C ++ 11的std::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.