GCD总结

 

GCDGrand-Central-Dispatch)是iOS中实现多线程中最常用,最好用的一种实现方法,管理起来也比较方便,因为iOS系统已经为我们做了很多的内部处理。我再用GCD管理多线程问题就显得容易了很多。

 二、GCD是纯C语言的,因此我们在编写GCD相关代码的时候,面对的函数,而不是方法。在GCD中最常用的函数有一下几个:

1.创建队列:

dispatch_queue_t  queue = dispatch_queue_create("com.LD.myQueue",NULL);

第一个参数表示队列的名字;

第二个参数表示队列的属性,第二个参数传NULL或者DSIPATCH_QUEUE_SERIAL表明要创建一个Serial Dispatch Queue(串行队列), 传入DISPATCH_QUEUE_CONCURRENT 创建一个 Concurrent Dispatch Queue(并行队列)。

2.获取主队列:

dispatch_queue_t queue = dispatch_get_main_queue();

更新程序UI界面要在主队列中执行;

3.获取全局队列:

dispatch_queue_t  globalQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0);

全局队列是并行队列;

dispatch_get_global_queue第一个参数是队列的优先级,分别对应四个全局队列:

DISPATCH_QUEUE_PRIORITY_HIGH

DISPATCH_QUEUE_PRIORITY_DEFAULT

DISPATCH_QUEUE_PRIORITY_LOW

DISPATCH_QUEUE_PRIORITY_BACKGROUND

dispatch_get_global_queue中第二个参数目前系统保留,请设置为0即可。

 4.获取当前队列:

dispatch_queue_t  currentQueue dispatch_get_currentQueue();

如果在队列执行任务中调用,返回执行此任务的队列;如果在主线程中调用,将返回主队列;如果在一般线程(非主线程线程非队列执行任务)中调用,返回DISPATCH_QUEUE_PRIORITY_DEFAULT全局队列。

5.在队列中分配任务:

dispatch_async(queue,^{

  // do something

});

 

 

GCD 的参考链接:

iOS的GCD中如何关闭或者杀死一个还没执行完的后台线程?

下面的链接是CSDN中M了个J的一篇博文,写的相当精彩,分析的十分详细,但是博文写的比较早,有一些技术已经发生了改变。例如,dispatch_queue的释放问题,在iOS5一之前的系统中,dispatch_queue是必须要手动释放的,而在iOS6之后苹果的ARC也能够做到dispatch_queue 的自动释放。而博文中依然要手动释放,这点需要注意。

http://blog.csdn.net/q199109106q/article/details/8566300

http://www.cocoachina.com/industry/20131210/7506_2.html

转载于:https://www.cnblogs.com/zybdream/p/4758880.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值