iOS 学习 之 gcd

感谢网上那些的介绍文件

Grand Central Dispatch (GCD)是Apple开发的一个多核编程的较新的解决方法。在Mac OS X 10.6雪豹中首次推出,并在iOS4.0 之后才别引入 。

GCD是一个替代诸如NSThread等技术的很高效和强大的技术。GCD完全可以处理诸如数据锁定和资源泄漏等复杂的异步编程问题。 异步处理的解决办法。

主要方法:

(1)创建一个队列   
  dispatch_queue_t queue = dispatch_queue_create("LoadImage", NULL);

       其中,第一个参数是标识队列的,第二个参数是用来定义队列的参数(目前不支持,因此传入NULL)。
(2)执行一个队列(async--->异步,sync--->同步)   
  dispatch_async(queue, ^{ [self doSomething]; });

        其中,首先传入之前创建的队列,然后提供由队列运行的代码块。
(3)声明并执行一个队列 (如果不需要保留要运行的队列的引用)
  dispatch_async(dispatch_queue_create ("LoadImage", NULL), ^{ [self doSomething]; });

(4)暂停一个队列   
  dispatch_suspend(queue);

(5)恢复一个队列(如果暂停一个队列不要忘记恢复)

       dispatch_resume(queue);

(6)将代码块中的工作转回到主线程(注意,dispatch_suspend (以及dispatch_resume)在主线程上不起作用)
  dispatch_sync(dispatch_get_main_queue(), ^{ [self dismissLoginWindow]; });


例子说明 比较的直观:


-(void) multiThread{

    dispatch_queue_t queue = dispatch_queue_create("test", NULL);

    

    dispatch_async(queue, ^{

        //在新的线程中执行

        dispatch_async(dispatch_get_main_queue(), ^{

           

            //  在主线中执行,这个时候可以来更新ui  ,如果是只是单单需要异步,就不需要在新队列中,可以直接放在主线程中

            

        });

    });

}



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值