我有一個寫入到原子變量的線程。 (使用memory_order_release)。 線程A在寫入該變量的唯一線程中使用memory_order_relaxed加載原子變量是否安全?
還有很多其他線程讀取該變量。 (使用memory_order_acquire)。 主題B。
在線程A中使用memory_order_relaxed讀取該變量是否安全?
我有一個寫入到原子變量的線程。 (使用memory_order_release)。 線程A在寫入該變量的唯一線程中使用memory_order_relaxed加載原子變量是否安全?
還有很多其他線程讀取該變量。 (使用memory_order_acquire)。 主題B。
在線程A中使用memory_order_relaxed讀取該變量是否安全?
是的,從某種意義上講它的安全性與單線程操縱的非原子變量相同。
例如,如果寫釋放之前測序以程序順序鬆弛讀取,並且不存在另一個寫至該變量,則鬆弛讀取將看到(N3337由寫釋放寫入的值§1.10.12-13)。
是的,這是足夠使用memory_order_relaxed
當線程A讀取變量此讀總是會在之前發生與寫關係,在同一個線程occures,因爲程序順序的。
沒有辦法用給出的信息來回答。我們不知道你需要從原子變量中得到什麼語義。例如,線程A是否寫入其他內存,然後寫入原子變量,並且您需要保證看到寫入原子變量的其他線程看到之前的寫入?或不? –