IOS 多线程初探(三) - GCD

这次来介绍下苹果主推的多线程使用方式,GCD。GCD全称是Grand Central Dispatch。该多线程机制性能很好。GCD声明了一系列dispatch开头的方法来实现多线程操作,dispatch方法中提供了一个Block回调来处理线程的任务。

先来看一个实例:

- (void)function
{
    dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
    dispatch_async(queue, ^{
        [self loop];
    });
}

- (void)loop
{
    xxxxx.....//线程任务
}

我们一句一句来解释上面的程序。首先说dispatch_get_global_queue,这是一个获取线程调度队列的方法,返回类型是dispatch_queue_t。用GCD产生的线程要放在队列里调度执行。在GCD中有三个调度队列:

  1. Main queue,在main queue中定义的任务在主线程中执行,一般是和UI相关的操作,比如更新界面。获取该队列的方法是dispatch_get_main_queue。
  2. Concurrent queue ,在concurrent queue中定义的任务在用户线程中执行,一般是后台执行时间较长的任务,比如下载。获取该队列的方法是dispatch_get_global_queue。
  3. Serial queue,在serial queue中定义的任务是顺序执行的,即先进先出(FIFO)。获取该队列的方法是dispatch_queue_create,使用该队列需要显示调用dispatch_release方法在线程结束时释放队列。

上面三种获取队列的方法中,第一个参数表示队列的优先级,一般为Default,第二个参数是个flag,一般情况为0。dispatch_async是异步线程方法(在异步线程执行的过程中不影响主线程,也就是UI还是能响应的,不同于同步方式,会让UI界面卡住,直到同步线程结束),第一个参数是获取到的队列,第二个参数就是线程的回调函数(Block),在block中添加线程的代码。

先介绍这么多,今后理解更深入再来补充

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值