為什麼原子寫入在編譯器中沒有被最佳化
問題:為什麼編譯器不合併餘餘的原子寫入單一原子具有相同的值變數?
解釋:
C 11/14 標準允許將原子變數的連續儲存摺疊或合併到單一儲存中。在某些情況下,即使商店具有不同的值,也可以執行此最佳化。然而,由於多種因素,編譯器目前不會執行此最佳化。
避免最佳化的原因:
解決方案和未來的考慮因素:
目前,沒有辦法明確地控制這種最佳化C 11/14 標準。然而,擴展 std::atomic API 的討論正在進行中,以使程式設計師能夠更好地控制此類最佳化。這可以使編譯器在有用時執行最佳化而不違反排序規則。
替代方法:
使用揮發性原子變數可以防止編譯器最佳化原子儲存。然而,這並不是一個萬無一失的解決方案,在某些情況下仍可能導致意外行為。
以上是為什麼編譯器不最佳化冗餘原子寫入?的詳細內容。更多資訊請關注PHP中文網其他相關文章!