關(guān)于多線程

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

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

先來個隊列屬性, 方便在不同作用域使用

@property (nonatomic, strong) dispatch_queue_t queue;


 #pragma mark - 創(chuàng)建數(shù)據(jù)庫
 - (void)createDataBase{
    
    //創(chuàng)建并發(fā)隊列, 異步完成數(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];
    });

}

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

例子

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);

//同時執(zhí)行一個

dispatch_barrier_async(queue,blk_for_writing);

dispatch_async(queue,blk3_for_reading);

dispatch_async(queue,blk4_for_reading);

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

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

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

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

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