2015-09-25 13 views
1

我有一個寫入到原子變量的線程。 (使用memory_order_release)。 線程A在寫入該變量的唯一線程中使用memory_order_relaxed加載原子變量是否安全?

還有很多其他線程讀取該變量。 (使用memory_order_acquire)。 主題B

在線程A中使用memory_order_relaxed讀取該變量是否安全?

+0

沒有辦法用給出的信息來回答。我們不知道你需要從原子變量中得到什麼語義。例如,線程A是否寫入其他內存,然後寫入原子變量,並且您需要保證看到寫入原子變量的其他線程看到之前的寫入?或不? –

回答

7

是的,從某種意義上講它的安全性與單線程操縱的非原子變量相同。

例如,如果寫釋放之前測序以程序順序鬆弛讀取,並且不存在另一個寫至該變量,則鬆弛讀取將看到(N3337由寫釋放寫入的值§1.10.12-13)。

5

是的,這是足夠使用memory_order_relaxed當線程A讀取變量此讀總是會在之前發生與寫關係,在同一個線程occures,因爲程序順序的。

相關問題