程序员的自我修养

GCD之深入学习知识点备忘2

2017-05-16  本文已影响5人  yehkong

继续总结和备忘:

    dispatch_async(queue, ^{ /*处理1*/  });
    dispatch_async(queue, ^{ /*处理2*/  });
    dispatch_async(queue, ^{ /*处理3*/  });
    dispatch_barrier_async(queue, ^{ /*处理xxx*/  });
    dispatch_async(queue, ^{ /*处理4*/  });
    dispatch_async(queue, ^{ /*处理5*/  });
    dispatch_async(queue, ^{ /*处理6*/  });

这个处理1、2、3会先并行处理完毕,接着处理xxx,xxx处理完毕之后,再接着并行处理4、5、6。

使用concurrent dispatch queue和dispatch_barrier_asyn函数可以实现高效的数据库访问和文件访问。

对应的dispatch_barrier_sync函数,跟dispatch_barrier_async的区别是:
dispatch_barrier_async将自己的任务插入到队列之后,不会等待自己的任务结束,它会继续把后面的任务插入到队列,然后等待自己的任务结束后才执行后面任务;dispatch_barrier_sync将自己的任务插入到队列的时候,需要等待自己的任务结束之后才会继续插入被写在它后面的任务,然后执行它们

上一篇 下一篇

猜你喜欢

热点阅读