簡體   English   中英

舊的C ++編譯器中的防護

[英]Fencing in old C++ compilers

我有一個多線程應用程序,需要在gcc 4.4上進行編譯,不允許使用c ++ 0x標志。

我希望變量具有原子性,但是不幸的是沒有C ++ 0x標志,我無法在C ++中使用atomic<T>

我嘗試了boost::atomic但它給了我一個錯誤

ISO C ++禁止聲明沒有類型的“原子”

在這種情況下,還有其他方法可以實現原子性嗎?我可以使用屏蔽嗎?如果可以,那么是否有指南或常用命令在舊C ++中實現屏蔽。

正如Sam Varshavchik在上述評論中所建議的那樣,使用POSIX std :: mutex,我們可以在多線程應用程序中保護變量。

std :: mutex是一個過大的殺手,但這是我們對gcc 4.4最好的。

C ++ 11 atomic在解決此問題方面做得更好,但僅在較新的編譯器上可用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM