在多執行緒中,atomic只保證getter、setter方法安全,並不保證其它操作,例如字串拼接,陣列移除元素等
-(void)setmstrorigin:(nsstring *)mstrorigin
}}-(nsstring *)mstrorigin
}
atomic:執行緒安全,需要消耗大量的資源
執行緒安全,需要消耗大量的資源nonatomic:非執行緒安全,適合記憶體小的移動裝置
synchronized 與 atomic
互斥鎖:當上乙個執行緒的任務沒有執行完畢的時候(被鎖住),那麼下乙個執行緒會進入睡眠狀態等待任務執行完畢,當上乙個執行緒的任務執行完畢,下乙個執行緒會自動喚醒然後執行任務。
自旋鎖:當上乙個執行緒的任務沒有執行完畢的時候(被鎖住),那麼下乙個執行緒會一直等待(不會睡眠),當上乙個執行緒的任務執行完畢,下乙個執行緒會立即執行。
自旋鎖應用場景:
比較適合做一些不耗時的操作
synchronized:互斥鎖
atomic:自旋鎖
共同點:都能保證同一時刻只能有乙個執行緒操作鎖住的**
nonatomic:非執行緒安全,適合記憶體小的移動裝置
synchronized 與 atomic
互斥鎖:當上乙個執行緒的任務沒有執行完畢的時候(被鎖住),那麼下乙個執行緒會進入睡眠狀態等待任務執行完畢,當上乙個執行緒的任務執行完畢,下乙個執行緒會自動喚醒然後執行任務。
自旋鎖:當上乙個執行緒的任務沒有執行完畢的時候(被鎖住),那麼下乙個執行緒會一直等待(不會睡眠),當上乙個執行緒的任務執行完畢,下乙個執行緒會立即執行。
自旋鎖應用場景:
比較適合做一些不耗時的操作
synchronized:互斥鎖
atomic:老版本底層是 自旋鎖,新版本不再是了
共同點:都能保證同一時刻只能有乙個執行緒操作鎖住的**
堆疊的一些理解
堆疊是一種執行 後進先出 演算法的資料結構。設想有乙個直徑不大 一端開口一端封閉的竹筒。有若干個寫有編號的小球,小球的直徑比竹筒的直徑略小。現在把不同編號的小球放到竹筒裡面,可以發現一種規律 先放進去的小球只能後拿出來,反之,後放進去的小球能夠先拿出來。所以 先進後出 就是這種結構的特點。堆疊就是這...
const 的一些理解
以前覺得自己對const還是有些理解的,今天一兄弟問了乙個問題才讓我對這個東西又加深了些了解 class temp public void output void func const temp a a.output 就這麼簡單乙個東西,眨眼一看,沒什麼問題,但是編譯是不會通過的,因為func呼叫了...
linuxI O的一些理解
同步i o 阻塞i o 非同步i o 非阻塞 同步,非同步的概念本來是通訊領域的,很難解釋清楚,但我肯定他跟阻塞非阻塞完全沒有任何關係。在這裡的同步非同步,我個人的理解是函式呼叫的時候的同步非同步。其實同步方式很好理解,例如你呼叫乙個function,當這個function執行完後,這個方法實現的功...