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全部线程全都执行完了之后才会执行"); });