2019-04-12
2019-06-03 本文已影响0人
懒惰的王子
1、线程和队列

2、队列组
今天看之前代码发现一对函数,dispatch_group_enter和dispatch_group_leave,字面意思理解,进队列组,和出队列组。但在使用队列组的时候它们和不用它们的区别在哪呢?一时间没想明白,所以写了个demo来实际应用一下:

如图,最简单队列组的应用,执行顺序是1->2->3或者2->1->3
再加上,dispatch_group_enter和dispatch_group_leave,实际上也没区别。但在实际应用中,我们经常在1和2的并发队列中放网络请求,这就不一样了,接下来模拟一下:

它的执行顺序是3->1->2或3->2->1,由于队列组group,只会对queue进行监控,但queue里面放的是异步线程。对于queue来说,已经执行完毕了,所以group会直接跳出结束。但queue里面并没有执行完成,那如何监测queue里面queue的执行结果呢?这时候dispatch_group_enter和dispatch_group_leave就派上用场了:
