atomic 加鎖操作

2021-07-06 10:23:34 字數 612 閱讀 1912

@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,在讀取和設定這個標誌的時候加鎖,是...