iOS atomic 保證了讀和寫的過程是可靠的鹉胖,但并不能保證數(shù)據(jù)一定是可靠的
其實很簡單的例子福稳,如果定義屬性 NSInteger i 是原子的,對i進行 i = i + 1; 操作就是不安全的。因為原子性只能保證讀寫安全,而該表達式需要三步操作:1.讀取i的值存入寄存器按灶;2.將i加1;3.修改i的值筐咧;如果在第1步完成的時候鸯旁,i被其他線程修改了,那么表達式執(zhí)行的結(jié)果就會與預(yù)期的不一樣量蕊,也就是不安全的铺罢。
其實很簡單的例子福稳,如果定義屬性 NSInteger i 是原子的,對i進行 i = i + 1; 操作就是不安全的。因為原子性只能保證讀寫安全,而該表達式需要三步操作:1.讀取i的值存入寄存器按灶;2.將i加1;3.修改i的值筐咧;如果在第1步完成的時候鸯旁,i被其他線程修改了,那么表達式執(zhí)行的結(jié)果就會與預(yù)期的不一樣量蕊,也就是不安全的铺罢。