国产探花免费观看_亚洲丰满少妇自慰呻吟_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>{    

主站蜘蛛池模板:
天水市|
许昌市|
吉林省|
龙岩市|
海丰县|
勃利县|
台湾省|
铜梁县|
常宁市|
定南县|
和平区|
广昌县|
临西县|
泰和县|
洞口县|
咸阳市|
涞水县|
邵阳县|
平山县|
义乌市|
临邑县|
宣武区|
苏尼特左旗|
潞城市|
嘉荫县|
太仓市|
清镇市|
尖扎县|
楚雄市|
河津市|
赤水市|
郓城县|
永年县|
宜州市|
内乡县|
梁平县|
海安县|
屯留县|
黔江区|
武川县|
九龙城区|