1、线程和队列
![](https://img.haomeiwen.com/i4910976/c987d687d66eaf1e.png)
2、队列组
今天看之前代码发现一对函数,dispatch_group_enter和dispatch_group_leave,字面意思理解,进队列组,和出队列组。但在使用队列组的时候它们和不用它们的区别在哪呢?一时间没想明白,所以写了个demo来实际应用一下:
![](https://img.haomeiwen.com/i4910976/55fab788d0201016.png)
如图,最简单队列组的应用,执行顺序是1->2->3或者2->1->3
再加上,dispatch_group_enter和dispatch_group_leave,实际上也没区别。但在实际应用中,我们经常在1和2的并发队列中放网络请求,这就不一样了,接下来模拟一下:
![](https://img.haomeiwen.com/i4910976/b88a6d7d566678a7.png)
它的执行顺序是3->1->2或3->2->1,由于队列组group,只会对queue进行监控,但queue里面放的是异步线程。对于queue来说,已经执行完毕了,所以group会直接跳出结束。但queue里面并没有执行完成,那如何监测queue里面queue的执行结果呢?这时候dispatch_group_enter和dispatch_group_leave就派上用场了:
![](https://img.haomeiwen.com/i4910976/8d4ebe8fe52304b1.png)
网友评论