再談atomic

我們經常聽到一個說法,說屬性修飾字atomic表示原子訪問,但是不線程安全。原子訪問,很好理解,通過加鎖,保證訪問的持續性,不被其他線程干擾。但線程不安全是怎麼理解呢?蘋果文檔是這樣舉例解釋這個問題的:https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/ProgrammingWithObjectiveC/EncapsulatingData/EncapsulatingData.html

說在A線程中修改person對象的兩個原子訪問的屬性,firstName和lastName。這時候B線程來讀取person的這兩個屬性,這時候就會出問題,是修改前的firstName+修改後的lastName,還是兩個修改過的,還是別的?網上很多的解釋如果只着眼於一個屬性考慮,其實是線程安全的,不線程安全的根源是多個原子操作在一起時的非原子性。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章