簡體   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