Grand Central Dispatch 簡稱(GCD)是蘋果公司開發的技術,簡單來講,GCD就是iOS一套解決多線程的機制,使用GCD可以最大限度簡化多線程編程數據庫
/** * 在主線程執行 */ dispatch_async(dispatch_get_main_queue(), ^{ ; });
/** * 在後臺線程執行 */ dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ ; });
/** * 只執行一次 * (特別適合在單例中使用) */ static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ ; });
/** * 延遲X秒執行 */ double delayTime = 2.0; dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delayTime * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ ; });
__weak
、__block
等/** * 建立一個串行線程隊列SerialQuene,一次只執行一個任務 * * @param "com.SerialQuene" 隊列名,通常爲com.quene名字 * @param NULL NULL就建立Serial線程 * */ dispatch_queue_t serialQuene = dispatch_queue_create("com.SerialQuene", NULL);
/** * 建立一個並行線程隊列ConcurrentQuene,一次能並行執行多個任務,完成的時間不定 * * @param "com.ConcurrentQuene" 隊列名,通常爲com.quene名字 * @param DISPATCH_QUEUE_CONCURRENT 建立一個並行Concurrent線程 * */ dispatch_queue_t concurrentQuene = dispatch_queue_create("com.ConcurrentQuene", DISPATCH_QUEUE_CONCURRENT);
/** * 建立一個Group,在Group中執行的線程都結束了之後會通知notify執行 */ dispatch_queue_t quene = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0); dispatch_group_t group = dispatch_group_create(); dispatch_group_async(group, quene, ^{ NSLog(@"1"); }); dispatch_group_async(group, quene, ^{ NSLog(@"2"); }); dispatch_group_async(group, quene, ^{ NSLog(@"3"); }); dispatch_group_notify(group, quene, ^{ NSLog(@"等到group全部線程全都執行完了之後纔會執行"); });