Atomic vs non-atomic 原子性

有些人会把原子性和线程安全混为一谈,但这个理解是不对的。原子属性确保的是,如果两个不同的线程想要同时设定一个值,那么会有第三个线程来监视它们,读值然后返回。所以,当你的属性是原子性的时候,多线程并行要么发生,要么不发生,不可能发生一半。

那线程安全的他完全是另外一些事情,他表示的是部分代码的安全执行。举个例子。如果说你从旧金山搬家到巴黎,你居住的街道,城市和国家都会发生改变。如果这时候,我想要读取你的街道住址,我会读到香榭丽舍大街上,但是你的城市和国家依然是旧金山跟美国。

当你创建了控件(IBOutlet)的时候,你会发现 Xcode 默认把他们定义为 nonatomic。因为控件不会在主线程以外的地方被读取到,在单线程环境中,使用 nonatomic 可以提升性能。

results matching ""

    No results matching ""