[英]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.