ios GCD简单介绍

Posted 超超不会飞55

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ios GCD简单介绍相关的知识,希望对你有一定的参考价值。

本从实践出发简单说明:

首先,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简单介绍的主要内容,如果未能解决你的问题,请参考以下文章

iOS开发多线程篇—GCD介绍

转:iOS开发多线程篇—GCD介绍

ios多线程 -- GCD介绍

iOS多线程编程(四)------ GCD(Grand Central Dispatch)

iOS 多线程:『GCD』详尽总结

使用 Git 来管理 Xcode 中的代码片段