GCD

作者: lcc小莫 | 来源:发表于2017-07-26 17:50 被阅读0次

    GCD的好处:

    1.GCD是基于C语言的封装3,充分利用了CPU的多核心,节省内存

    2.自动管理线程的生命周期(创建线程、调度任务、销毁线程),不需要程序员手动管理

    3.程序员只需要告诉GCD需要执行什么任务,不用再编写任何线程管理的代码

    任务:放到线程中,需要执行的那段代码

    1.同步:不具备开启线程的能力,只能在当前线程执行任务

    2.异步:具备开启线程的能力,可以开启其它线程执行任务

    队列:执行任务时遵行先进先出的原则

    1.并行:可以开启多个线程,执行多个并发任务,但是只能在异步函数中有效

    2.串行:让任务一个接着一个的执行

    GCD线程之间的通讯

    通常情况下,我们是在主线程里进行UI刷新、点击、拖拽、滚动等操作,然后把以一些耗时操作放到其它线程,当其它线程完成了操作,就回到了主线程,那么就用到了线程之间的通讯。

    #pragma mark - 将多个耗时操作加到异步队列中,刷新UI

    dispatch_group_async :

    将代码块dispatch_block_t block放入队列dispatch_queue_t queue中执行;并和调度组dispatch_group_t group相互关联;如果提交到dispatch_queue_t queue中的block全都执行完毕会调用dispatch_group_notify并且dispatch_group_wait会停止等待;

    dispatch_group_enter(group)、dispatch_group_leave(group)

    dispatch_group_enter(group):相当于引用计数的+1;

    dispatch_group_leave(group) :相当于引用计数的-1;这两个是成对存在的。

    dispatch_group_notify:

    当group中所有的block操作都完成后才会执行,不会阻塞当前调用线程,如果需要阻塞当前调用线程,可使用dispatch_group_wait(group, DISPATCH_TIME_FOREVER);

    相关文章

      网友评论

          本文标题:GCD

          本文链接:https://www.haomeiwen.com/subject/dwlgkxtx.html