GCD

2019-03-24  本文已影响0人  你大爷终归是你大爷

一、 GCD控制线程数
1、初始化一个可以接收任务block的队列
2、初始化一个并行GCD队列
3、如控制并发数是5个,初始化信号量为5
4、将block中异步加入CGD队列中,在该处加入信号量的控制(感觉还是有问题,加入GCD的异步方法,会产生很多线程)
参考:https://www.jianshu.com/p/75214bc1bc97
https://www.jianshu.com/p/5bb4123e415c
https://www.jianshu.com/p/b4ac982108f3

二、GCD取消任务
注意:所有取消任务的方法,都不能取消正在执行的任务
1、使用dispatch_block_cancel
iOS8之后可以调用dispatch_block_cancel来取消(需要注意必须用dispatch_block_create创建dispatch_block_t)
2、自己使用变量控制任务取消
如设置布尔值,在所有任务block开始处,先判断布尔值,如果为true,则return

*一般情况,如果有对异步任务有特殊要求,建议使用 NSOperation、NSOperationQueue
参考:https://www.jianshu.com/p/4b1d77054b35

GCD相关参考:
底层实现:https://blog.csdn.net/passerbysrs/article/details/18563325

上一篇 下一篇

猜你喜欢

热点阅读