项目中有许多地方要使用到GCD,因此研究GCD一段时间,从各种渠道翻译了多篇文章,找了很多的资料,看了很多官方文档。项目完成后本人利用闲暇时间,集合了众多博客以及Demo所讲解的封装了一个github公有库,已经上传1.0.0版本,欢迎大家给star 。
这篇是本人对库用法一一进行讲解.同时也欢迎大家指正
1.库支持ARC以及非ARC,但是无论在ARC环境还是在非ARC环境,都需要调用dispatchRelease方法来释放init出的你所创建的GCDGroup,GCDQueue,GCDSemaphore,以及GCDTimer对象
2.系统并发线程的使用:
原本GCD的并发线程是使用dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)来操作,但是你有没有使用的时候就很抓瞎的感觉,而经过封装之后直接可以这样使用:
[[GCDQueue globalQueue] execute:^{
// 在系统默认级别的线程队列中执行并发的操作
}];
当多个执行的时候是没有先后关系的
3.系统串行线程
[[GCDQueue mainQueue] execute:^{
// 在系统主线程队列中执行串行操作
}];
主线程队列是被系统自动创建的,用来关联上你的应用的主线程.但是作为全局的并发队列,调用dispatch_suspend,dispatch_resume,dispatch_set_context类似的方法都将无效.它的执行是按先后顺序的
一般我们可以这样联合使用效果更佳
[[GCDQueue globalQueue] execute:^{
// 并发线程执行阻塞操作
[[GCDQueue mainQueue] execute:^{
// 主线程更新UI }];
}];