[swift-dev] Questions about ARC

Joe Groff jgroff at apple.com
Fri Dec 2 11:13:51 CST 2016


> On Dec 1, 2016, at 4:55 PM, Jiho Choi via swift-dev <swift-dev at swift.org> wrote:
> 
> Thanks for the explanation.
> One last question is why non-atomic ARC operations still use atomic load and store.  Wouldn't regular memory operations be enough?

According to the C++ memory model, all operations on an atomic<T> must be atomic. It is undefined behavior to cast a pointer to the atomic into a T* and perform normal loads and stores. "Relaxed" loads and stores however imply no ordering with other threads, so compile down to plain nonatomic CPU instructions.

-Joe


More information about the swift-dev mailing list