GCD學(xué)習(xí) dispatch_apply

dispathc_apply 是dispatch_sync 和dispatch_group的關(guān)聯(lián)API.

它以指定的次數(shù)將指定的Block加入到指定的隊列中。并等待隊列中操作全部完成.


NSArray *array = [NSArray arrayWithObjects:@"/Users/chentao/Desktop/copy_res/gelato.ds",

@"/Users/chentao/Desktop/copy_res/jason.ds",

@"/Users/chentao/Desktop/copy_res/jikejunyi.ds",

@"/Users/chentao/Desktop/copy_res/molly.ds",

@"/Users/chentao/Desktop/copy_res/zhangdachuan.ds",

nil];

NSString *copyDes = @"/Users/chentao/Desktop/copy_des";

NSFileManager *fileManager = [NSFileManager defaultManager];

dispatch_async(dispatch_get_global_queue(0, 0), ^(){

dispatch_apply([array count], dispatch_get_global_queue(0, 0), ^(size_t index){

NSLog(@"copy-%ld", index);

NSString *sourcePath = [array objectAtIndex:index];

NSString *desPath = [NSString stringWithFormat:@"%@/%@", copyDes, [sourcePath lastPathComponent]];

[fileManager copyItemAtPath:sourcePath toPath:desPath error:nil];

});

NSLog(@"done");

});

輸出 copy-index 順序不確定,因為它是并行執(zhí)行的(dispatch_get_global_queue是并行隊列),但是done是在以上拷貝操作完成后才會執(zhí)行,因此,它一般都是放在dispatch_async里面(異步)。實際上,這里 dispatch_apply如果換成串行隊列上,則會依次輸出index,但這樣違背了我們想并行提高執(zhí)行效率的初衷

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

  • dispathc_apply 是dispatch_sync 和dispatch_group的關(guān)聯(lián)API.它以指定的...
    魏雷123閱讀 290評論 0 0
  • 同步/異步 同步:多個任務(wù)情況下,一個任務(wù)A執(zhí)行結(jié)束,才可以執(zhí)行另一個任務(wù)B。只存在一個線程也就是主線程。 異步:...
    XLsn0w閱讀 336評論 0 0
  • 目錄(GCD): 關(guān)鍵詞 混淆點 場景應(yīng)用 總結(jié) 1. 關(guān)鍵詞 線程概念: 獨立執(zhí)行的代碼段,一個線程同時間只能執(zhí)...
    Ryan___閱讀 1,374評論 0 3
  • 濮陽位於三省交會之處,歷史上有幾次大規(guī)模移民,各省文化融合匯集於此,造就美食薈萃,美味包羅萬象,形成濮陽的獨樹一幟...
    輕醒閱讀 768評論 2 5
  • 10.12版本可以系統(tǒng)偏好設(shè)置安全性之前輸入密碼勾選但是10.12版本之后系統(tǒng)就把這個選項隱藏了,但是我們可以在終...
    f2efa87f6528閱讀 5,811評論 0 0

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