1:NSLock ?對于資源搶占問題我們可以考慮使用同步鎖NALock來解決,使用時把需要加鎖的代碼放到NSLock的lock和unlock之間,一個線程A進入加鎖代碼以后,另一個線程B就無法訪問了,只能等線程A執(zhí)行完加鎖代碼后解鎖,B線程才能訪問加鎖代碼。
2:@Synchronized代碼塊 (相比NSlock簡單一點 也是解決同步線程問題)
3:使用GCD解決資源搶占問題 -GCD提供一種信號機制,(和同步鎖的機制并不一樣)
4:擴展-控制線程通信 ? 由于線程的調(diào)度時透明的,程序有時候很難對他進行有效的控制,iOS提供了NSCondition來控制線程通信(同GCD信號機制類似)
5:其他鎖
NSRecursiveLock:遞歸鎖 有時候加鎖代碼中存在遞歸調(diào)用,遞歸開始前加鎖,遞歸開始調(diào)用后重復執(zhí)行此方法以至于加鎖代碼照成死鎖
NSDistributedLock:分布鎖,它本身時一個互斥鎖,基于文件方式實現(xiàn)鎖機制,可以跨進程訪問
pthread_mutex_t:同步鎖,基于C語言的同步鎖機制,使用方法與其他同步鎖機制類似
http://www.itdecent.cn/p/c6661d632160 面試題目