国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統(tǒng) > iOS > 正文

詳解iOS 多線程 鎖 互斥 同步

2020-07-26 03:01:55
字體:
來源:轉載
供稿:網友

在iOS中有幾種方法來解決多線程訪問同一個內存地址的互斥同步問題:

方法一,@synchronized(id anObject),(最簡單的方法)

會自動對參數(shù)對象加鎖,保證臨界區(qū)內的代碼線程安全

@synchronized(self)  {      // 這段代碼對其他 @synchronized(self) 都是互斥的          // self 指向同一個對象  }  

方法二,NSLock
NSLock對象實現(xiàn)了NSLocking protocol,包含幾個方法:

  • lock,加鎖
  • unlock,解鎖
  • tryLock,嘗試加鎖,如果失敗了,并不會阻塞線程,只是立即返回NO
  • lockBeforeDate:,在指定的date之前暫時阻塞線程(如果沒有獲取鎖的話),如果到期還沒有獲取鎖,則線程被喚醒,函數(shù)立即返回NO

比如:

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>{    

主站蜘蛛池模板:
文成县|
平邑县|
绿春县|
辛集市|
奉节县|
新余市|
涟水县|
合川市|
南华县|
峨山|
嫩江县|
河津市|
慈溪市|
宁陵县|
玛纳斯县|
临泽县|
临泉县|
广灵县|
湾仔区|
晋中市|
德安县|
咸宁市|
文水县|
衡东县|
沂源县|
安宁市|
宜川县|
泾阳县|
壶关县|
花莲市|
西青区|
皮山县|
肇州县|
西宁市|
临桂县|
阿尔山市|
天门市|
庆城县|
通化市|
麻城市|
琼中|