關(guān)于多線程

寫在前面, 開辟多線程是會(huì)占用更多內(nèi)存的, 不要濫開線程, 當(dāng)然現(xiàn)在iPhone內(nèi)存2G, 適當(dāng)?shù)氖褂檬菢O好的

如果有個(gè)需求, 在某一段代碼之后, 將后面代碼放入同步線程, 讓其等待前面代碼執(zhí)行完, 再執(zhí)行barrier之后的代碼, 用在一定要有先后順序的代碼, 比如創(chuàng)建完數(shù)據(jù)庫再創(chuàng)建表

先來個(gè)隊(duì)列屬性, 方便在不同作用域使用

@property (nonatomic, strong) dispatch_queue_t queue;


 #pragma mark - 創(chuàng)建數(shù)據(jù)庫
 - (void)createDataBase{
    
    //創(chuàng)建并發(fā)隊(duì)列, 異步完成數(shù)據(jù)庫創(chuàng)建, 然后barrier同步等待數(shù)據(jù)庫創(chuàng)建之后, 創(chuàng)建表
    _queue = dispatch_queue_create("com.10000114.ForDatabase",DISPATCH_QUEUE_CONCURRENT);
dispatch_async(_queue, ^{
    
    [[NAFMDBHelper sharedFMDBHelper] createDatabase];
});
    //等待數(shù)據(jù)庫創(chuàng)建完再創(chuàng)建表
    dispatch_barrier_sync(_queue, ^{
    
        [self createUserInfoTable];
    });
}

#pragma mark - 創(chuàng)建表
- (void)createUserInfoTable{

    //異步完成表的創(chuàng)建
    dispatch_async(_queue, ^{
    
        [[NAFMDBHelper sharedFMDBHelper] createUserInfoTable];
    });

}

如果是同時(shí)執(zhí)行兩組代碼, 可以用Dispatch Group 和 Dispatch_set_target_queue , 但方便的話是dispatch_barrier_async, 這個(gè)我暫時(shí)還沒試驗(yàn)

例子

dispatch_queue_t queue = dispatch_queue_create(

   "com.example.gcd.ForBarrier",DISPATCH_QUEUE_CONCURRENT);

dispatch_async(queue,blk0_for_reading);

dispatch_async(queue,blk1_for_reading);

dispatch_async(queue,blk2_for_reading);

//同時(shí)執(zhí)行一個(gè)

dispatch_barrier_async(queue,blk_for_writing);

dispatch_async(queue,blk3_for_reading);

dispatch_async(queue,blk4_for_reading);

感謝流年如秋 http://m.itdecent.cn/p/799b9470d26e

最后編輯于
?著作權(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)容

  • NSThread 第一種:通過NSThread的對(duì)象方法 NSThread *thread = [[NSThrea...
    攻城獅GG閱讀 965評(píng)論 0 3
  • NSThread#### (每個(gè)NSThread對(duì)象對(duì)應(yīng)一個(gè)線程,真正的多線程) 使用NSObject類的方法pe...
    齊滇大圣閱讀 513評(píng)論 0 2
  • 文 || 張賀 進(jìn)程: 進(jìn)程是指在系統(tǒng)中正在運(yùn)行的一個(gè)應(yīng)用程序。每個(gè)進(jìn)程之間是獨(dú)立的,每個(gè)進(jìn)程均運(yùn)行在其專用且受保...
    張賀閱讀 327評(píng)論 0 4
  • 一:多線程間通信 多線程之間的通信可以體現(xiàn)在線程間數(shù)據(jù)的傳遞,或者是在某一個(gè)線程中完成操作之后轉(zhuǎn)移到另一個(gè)線程繼續(xù)...
    croire_cfg閱讀 266評(píng)論 0 0
  • 生活,一半是夢(mèng)想,一半是現(xiàn)實(shí),夢(mèng)想過于美好,就容易從現(xiàn)實(shí)的傷痛中走出來,不至于對(duì)生活失去希望;現(xiàn)實(shí)過于殘酷,才會(huì)想...
    此心不悔閱讀 170評(píng)論 0 1

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