2015-05-14 95 views

回答

0

在此假設下,這裏使用的boost原語支持相同的功能作爲他們std同行,第二load不需要memory_order_consume,因爲這是保證 基礎上,mutex的獲取/釋放語義與store/release要同步,你說得對。

也許,使用memory_order_consume是基於一個錯誤的假設,一個load/relaxed可以跨越mutex/acquire屏障, 飄了起來,但這不是每mutex擔保可能,因此memory_order_relaxed是完全沒有問題。

另一方面store/release是絕對必要的,因爲它與第一個load/consume同步,這是不受mutex保護。