atomic只是對getter恭垦、setter方法加鎖,不能確保線程安全,例如:
定義屬性 NSInteger i 是原子的探遵,對i進行 i = i + 1; 操作就是不安全的。因為原子性只能保證讀寫安全妓柜,而該表達式需要三步操作:
1.讀取i的值從內(nèi)存讀取到寄存器箱季;
2.將i加1;
3.將寄存器中修改后的i值存入內(nèi)存棍掐;
atomic只對第三步的操作加鎖藏雏,第一第二步?jīng)]加鎖,如果在第一步完成之后作煌,其他線程修改了i的值掘殴,就會造成數(shù)據(jù)錯亂