在iOS中有幾種方法來解決多線程訪問同一個內存地址的互斥同步問題:
方法一,@synchronized(id anObject),(最簡單的方法)
會自動對參數(shù)對象加鎖,保證臨界區(qū)內的代碼線程安全
@synchronized(self) { // 這段代碼對其他 @synchronized(self) 都是互斥的 // self 指向同一個對象 }
方法二,NSLock
NSLock對象實現(xiàn)了NSLocking protocol,包含幾個方法:
比如:
NSLock *theLock = [[NSLock alloc] init]; if ([theLock lock]) { //do something here [theLock unlock]; }
方法三,NSRecursiveLock,遞歸鎖
NSRecursiveLock,多次調用不會阻塞已獲取該鎖的線程。
NSRecursiveLock *theLock = [[NSRecursiveLock alloc] init]; void MyRecursiveFunction(int value) { [theLock lock]; if (value != 0) <span style="font-size:14px;"> </span>{ 主站蜘蛛池模板: 文成县| 平邑县| 绿春县| 辛集市| 奉节县| 新余市| 涟水县| 合川市| 南华县| 峨山| 嫩江县| 河津市| 慈溪市| 宁陵县| 玛纳斯县| 临泽县| 临泉县| 广灵县| 湾仔区| 晋中市| 德安县| 咸宁市| 文水县| 衡东县| 沂源县| 安宁市| 宜川县| 泾阳县| 壶关县| 花莲市| 西青区| 皮山县| 肇州县| 西宁市| 临桂县| 阿尔山市| 天门市| 庆城县| 通化市| 麻城市| 琼中|