@property (atomic, strong) nsstring *name;
//setter
- (void)setname:(name)
}}//getter
- (void)name
}
為什麼加鎖:
多執行緒的安全隱患
資源共享
一塊資源可能會被多個執行緒共享,也就是多個執行緒可能會訪問同一塊資源
比如多個執行緒訪問同乙個物件、同乙個變數、同乙個檔案
當多個執行緒訪問同一塊資源時,很容易引發資料錯亂和資料安全問題
互斥鎖的優缺點:
優點:能有效防止因多執行緒搶奪資源造成的資料安全問題
缺點:需要消耗大量的cpu資源
互斥鎖的使用前提:多條執行緒搶奪同一塊資源
相關專業術語:執行緒同步,多條執行緒按順序地執行任務
互斥鎖,就是使用了執行緒同步技術
原子和非原子屬性
oc在定義屬性時有nonatomic和atomic兩種選擇
atomic:原子屬性,為setter方法加鎖(預設就是atomic)
nonatomic:非原子屬性,不會為setter方法加鎖
原子操作 atomic
所謂的原子操作,取的就是 原子是最小的 不可分割的最小個體 的意義,它表示在多個執行緒訪問同乙個全域性資源的時候,能夠確保所有其他的執行緒都不在同一時間內訪問相同的資源。也就是他確保了在同一時刻只有唯一的執行緒對這個資源進行訪問。這有點類似互斥物件對共享資源的訪問的保護,但是原子操作更加接近底層,因...
原子操作atomic
c 中有atomic類和atomic flag兩個類,其中atomic類用於定義乙個原子操作,atomic flag定義一些與原子操作相關的函式 如下操作 atomic原子操作.cpp 定義控制台應用程式的入口點。一般的操作如上,我們開啟兩個執行緒,定義乙個全域性變數n,定義乙個執行緒函式,想要執行...
atomic原子操作
atomic原子操作在一些場景下,相比於其他的併發原語,效能更優 舉個例子 假設你想在程式中使用乙個標誌 flag,比如乙個 bool 型別的變數 來標識乙個定時任務是否已經啟動執行了,你會怎麼做呢?我們先來看看加鎖的方法。如果使用 mutex 和 rwmutex,在讀取和設定這個標誌的時候加鎖,是...