本从实践出发简单说明:
首先,gcd是Grand Central Dispatch的缩写,意为多线程优化技术,是苹果为多核处理优化的技术。使用简单、清晰。
多线程就分同步、异步方法如下:
//异步线程开启: dispatch_async(dispatch_queue_t queue, ^(void)block) //同步线程开启: dispatch_sync(dispatch_queue_t queue, ^(void)block) //dispatch_queue_t:队列 block:执行内容
队列说明:
创建方法如下:
dispatch_queue_create(const char *label, dispatch_queue_attr_t attr)
参数说明:label为队列名称 attr为队列形式 串行:DISPATCH_QUEUE_SERIAL 并行:DISPATCH_QUEUE_CONCURRENT
特殊队列说明:
系统默认就有一个串行队列main_queue和并行队列global_queue 使用方法如下:
dispatch_get_main_queue()//主队列 dispatch_get_global_queue(long identifier, unsigned long flags); /* identifler:优先级 * - DISPATCH_QUEUE_PRIORITY_HIGH: 2 * - DISPATCH_QUEUE_PRIORITY_DEFAULT: 0 * - DISPATCH_QUEUE_PRIORITY_LOW: -2 * - DISPATCH_QUEUE_PRIORITY_BACKGROUND: flags:待开发属性 请输入0 */
最后,特殊线程:
//前面的线程都结束后执行 此线程结束后才执行它后面的线程 dispatch_barrier_async(dispatch_queue_t queue, ^(void)block) dispatch_barrier_sync(dispatch_queue_t queue, ^(void)block) //重复执行线程 iterations 次数 dispatch_apply(size_t iterations, dispatch_queue_t queue, ^(size_t)block) //只执行一次 static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ // code to be executed once }); //延迟执行 NSEC_PER_SEC 秒 dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, delayInSeconds * NSEC_PER_SEC); dispatch_after(popTime, dispatch_get_main_queue(), ^(void){ // code to be executed on the main queue after delay }); //设置一个dispatch queue的优先级 void dispatch_set_target_queue( dispatch_object_t object, dispatch_queue_t queue)
时间: 2024-10-03 13:46:38