码迷,mamicode.com
首页 > 移动开发 > 详细

ios GCD简单介绍

时间:2016-05-31 19:02:15      阅读:253      评论:0      收藏:0      [点我收藏+]

标签:

本从实践出发简单说明:

首先,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)

 

ios GCD简单介绍

标签:

原文地址:http://www.cnblogs.com/chaochaobuhuifei55/p/5546849.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!