《Effective Objective-C 2.0》摘抄(2)- nonatomic 與 atomic

atomic 與 nonatomic 的區(qū)別:

1、具備 atomic 特質(zhì)的獲取方法會(huì)通過鎖定機(jī)制來確保其操作的原子性。也就是說,如果兩個(gè)線程同時(shí)讀寫同一屬性,那么不論何時(shí),總能看到有效的屬性值,若是不加鎖的話(即使用 nonatomic),那么當(dāng)其中的一個(gè)線程改變某屬性時(shí),另一個(gè)線程也會(huì)突然闖入,把尚未修改好的值都出來,發(fā)生這種情況時(shí),線程讀到的屬性值可能不對(duì)。

2、在 iOS 開發(fā)中使用同步鎖的開銷較大,這會(huì)帶來性能問題。一般情況下并不要求屬性必須是 “原子” 的,因?yàn)檫@并不能保證 “線程安全”,若要實(shí)現(xiàn) “線程安全” 的操作,還需要采用更為深層的鎖定機(jī)制才行。在 iOS 開發(fā)中一般都會(huì)使用nonatomic 屬性,在 macOS 開發(fā)中,使用 atomic 屬性,通常都不會(huì)有性能瓶頸。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容