我在我的代碼中大量使用了<thread> <atomic> <mutex>
等,其中包括幾個無鎖算法。我的目標(最終)是一個Linux環境。我一直在用Visual Studio 2011 Beta進行開發,雖然在其他C++ 11功能中缺少可怕的東西,但似乎是實現併發功能的唯一工具鏈。並行C++ 11 - 可以使用哪些工具鏈?
見C++ 11的支持位置:
現在,如果別人根本沒有包含C++ 11併發提供圖書館,我可以輕鬆地使用just::thread,但是clang和gcc都對C++ 11內存模型回答「no」,至少visual C++似乎支持這個模型。我不確定這會產生什麼樣的影響 - 可能會優化掉顯然無副作用的代碼以及其他錯誤的東西。
如果現在我完全避免優化構建,並且僅編譯調試構建而未啓用優化 - 使用Clang或GCC工具鏈是否合理?
我的猜測是,如果你使用'just :: thread',它會正常工作。它使用原生的(Posix或Win32)原語來強制排序等事情,所以我認爲編譯器通常會因爲失敗而被嚴重破壞。 – 2012-04-07 15:51:49
你應該在你的列表中包含一個多線程相關標籤,Anthony Williams經常在這裏出現,所以如果你足夠幸運,他會注意到。我認爲他創建了'just :: thread',以便它是跨平臺的,所以我不會期望任何問題。 – 2012-04-07 17:13:30