iOS執行緒加鎖

2022-05-21 21:33:10 字數 614 閱讀 8152

// 加鎖

@synchronized (self) // 解鎖

關於加鎖,這裡有乙個東西.關於這個語法:@property.每次我們定義 乙個屬性的時候,會首當其衝的寫上nonatomic,這是為什麼?請看下面解說:

nonatomic與atomic在@property中的不同:

都知道,這兩個關鍵字代表的是同乙個東西,只是代表的含義不同.是與執行緒有關的.

nonatomic代表的是:執行緒是不安全的.

atomic代表的是:執行緒是安全的.

那麼,問題來了.安全與不安全的具體體現形式是什麼呢?其實就是是否給這個屬性的setter方法是否加鎖.

nonatomic代表的是:沒有給這個屬性的setter方法加鎖,所以是不安全的.

atomic代表的是:給這個屬性的setter方法加鎖,所以是安全的.

那麼,問題又來了.在我們的ios開發中,為什麼要推薦使用nonatomic呢?

這個問題要從資源的耗損說起.在ios開發中,setter方法的呼叫是很頻繁的.給setter方法加鎖,是很耗資源的.所以在移動裝置上,盡量使用nonatomic.在mac開發中通常是使用atomic.當然,在不在乎資源,而在乎安全問題的話,使用atomic也是沒有問題的.

python執行緒加鎖(七)

今天學習了python中的執行緒加鎖功能,為了方便記憶,特地把 附上 coding utf 8 給執行緒加鎖 import time import thread def t name,x,lock for i in xrange x print i,name time.sleep 1 暫停1秒 lo...

synchronized 加鎖保證執行緒安全

synchronized關鍵字最主要有以下3種應用方式 1 例項方法加鎖 非靜態方法 使用synchronized修飾,以便保證執行緒安全 加了synchronized 後同時只能有乙個執行緒訪問該方法。但如果多個例項物件操作,非靜態方法不能保證執行緒安全。public class accounti...

多執行緒加鎖計數方法

import threading import time number 0def plus global number global宣告此處的number是外面的全域性變數number for in range 1000000 進行乙個大數級別的迴圈加一運算 number 1print 子執行緒 s...