dispatch_group和dispatch_barrier的用法

前天被人问到使用GCD做依赖的用法,结果完全答不上来,下来之后就搜索了一下GCD的高级用法,发现自己对于GCD的掌握还很浅,像dispatch_groupdispatch_barrier的用法居然都不知道。
dispatch_group就是用来解决依赖问题的,或者说是用来解决并发序列的顺序执行问题。主要有几个方法,分别是:

dispatch_group_t dispatch_group_create(void);
void dispatch_group_enter(dispatch_group_t group);
void dispatch_group_leave(dispatch_group_t group);
long dispatch_group_wait(dispatch_group_t group, dispatch_time_t timeout);
void dispatch_group_notify(dispatch_group_t group,
   dispatch_queue_t queue,
   dispatch_block_t block);

需要注意的就是,要先进入group,然后在调用notify,否则可能会导致直接调用了notify回调。

dispatch_barrier主要还是用于加锁,它主要用于有并发读写的需求时,正常使用dispatch_sync(dispatch_async)执行读操作,在执行写操作时,使用dispatch_barrier_sync(dispatch_barrier_async),等于对写操作了添加了互斥锁,可以避免多线程同时执行写操作。这样做可以执行并发读操作,同时有互斥的执行写操作,相比全部添加互斥锁提高了访问性能。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值