关于GCD的一些技巧笔记

来源:互联网 发布:如何做网络舆情监测员 编辑:程序博客网 时间:2024/06/07 02:39

利用串行队列的同步派发dispatch_sync将get、set方法实现的安排在同一个队列中可实现数据同步,在set方法中加入使用dispatch_async异步执行可以提升方法的执行速度,但有一个前提是要执行较为繁重的任务,如果是简单的任务可能反而改变之后会变慢,因为执行异步派发时需要拷贝。
如果使用并发队列则会更快一些,但是set方法如用使用异步执行则不能实现同步,这时候可以使用栅栏:

     dispatch_barrier_sync(<#dispatch_queue_t  _Nonnull queue#>, <#^(void)block#>)


dispatch_barrier_async(<#dispatch_queue_t  _Nonnull queue#>, <#^(void)block#>)

栅栏的作用是当并发队列发现下面执行的块是一个栅栏块的时候,就会等待当前所有并发块都执行完毕之后才单独执行这个栅栏块。栅栏块必须单独执行,不能与其他块并行。等栅栏块执行完毕后在继续向下处理。同步与异步栅栏块同上面set方法中提升执行速度操作同理,可根据实际情况选用不同的派发机制。




原创粉丝点击