iOS 保證數(shù)據(jù)的線程安全

一,創(chuàng)建一個(gè)串行的GCD隊(duì)列

二,用GCD欄柵函數(shù)dispatch_barrier_async和dispatch_barrier_sync

因?yàn)樽x取是并發(fā)的并且同步的因?yàn)樾枰R上得到返回的結(jié)果 ,寫必須是單獨(dú)執(zhí)行的。柵欄函數(shù)的作用是分割函數(shù)執(zhí)行,只有執(zhí)行完?yáng)艡诤瘮?shù)以后才可以執(zhí)行后面的任務(wù),利用這個(gè)特點(diǎn),可以把寫操作放在柵欄函數(shù)里,這樣等數(shù)據(jù)修改完以后才可以讀取。保證了線程安全。

- (void)setValue:(NSString *)value

forHTTPHeaderField:(NSString *)field

{

    dispatch_barrier_async(self.requestHeaderModificationQueue, ^{

        [self.mutableHTTPRequestHeaders setValue:value forKey:field];

    });

}

- (NSString *)valueForHTTPHeaderField:(NSString *)field {

    NSString __block *value;

    dispatch_sync(self.requestHeaderModificationQueue, ^{

        value = [self.mutableHTTPRequestHeaders valueForKey:field];

    });

    return value;

}

三,使用鎖

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 需求:這個(gè)對(duì)象有很多屬性,時(shí)時(shí)刻刻讀取和寫入,并且保證線程安全 方案:用欄柵dispatch_barrier_as...
    Eddiegooo閱讀 1,100評(píng)論 0 1
  • 1、進(jìn)程 1)進(jìn)程是一個(gè)具有一定獨(dú)立功能的程序關(guān)于某次數(shù)據(jù)集合的一次運(yùn)行活動(dòng),它是操作系統(tǒng)分配資源的基本單...
    Crics閱讀 557評(píng)論 0 0
  • 一、進(jìn)程、線程 一、 進(jìn)程: 1.進(jìn)程是一個(gè)具有一定獨(dú)立功能的程序關(guān)于某次數(shù)據(jù)集合的一次運(yùn)行活動(dòng),它是操作系統(tǒng)分配...
    cheng1314閱讀 475評(píng)論 0 0
  • 一、進(jìn)程、線程 一、 進(jìn)程: 多線程 1.進(jìn)程是一個(gè)具有一定獨(dú)立功能的程序關(guān)于某次數(shù)據(jù)集合的一次運(yùn)行活動(dòng),它是操作...
    一月筠閱讀 261評(píng)論 0 2
  • 目錄:iOS多線程(一)--pthread、NSThreadiOS多線程(二)--GCD詳解iOS多線程(三)--...
    Claire_wu閱讀 1,136評(píng)論 0 6

友情鏈接更多精彩內(nèi)容