iOS 全局并发队列管理工具。
(它是YYKit组件之一)
在使用并发队列执行大量 block 时,我遇到了以下问题
当某个 block 的线程被锁时,并发队列可能会创建大量线程,这可能会阻塞主线程。使用全局序列队列池可以避免这种情况。
// Get a serial queue from global queue pool
dispatch_queue_t queue = YYDispatchQueueGetForQOS(NSQualityOfServiceUtility);
// Create a serial queue pool
YYDispatchQueuePool *pool = [[YYDispatchQueuePool alloc] initWithName:@"file.read" queueCount:5 qos:NSQualityOfServiceBackground];
dispatch_queue_t queue = [pool queue];
YYDispatchQueuePool.h
。完整的 API 文档可以在 CocoaDocs 上找到。
您也可以使用 appledoc 在本地安装文档。
此库需要 iOS 6.0+
和 Xcode 7.0+
。
YYDispatchQueuePool 根据 MIT 许可证提供。有关详细信息,请参阅 LICENSE 文件。
iOS 全局并发队列管理工具。
(该项目是YYKit组件之一)
在用并发队列执行大量 block 时,有时会遇到以下情况:
当一个 block 所在线程被锁时,并发队列可能会创建大量线程,消耗大量资源从而影响主线程。这里可以使用一个全局的序列队列池来尽量控制全局线程数。
// 从全局的 queue pool 中获取一个 queue
dispatch_queue_t queue = YYDispatchQueueGetForQOS(NSQualityOfServiceUtility);
// 创建一个新的 serial queue pool
YYDispatchQueuePool *pool = [[YYDispatchQueuePool alloc] initWithName:@"file.read" queueCount:5 qos:NSQualityOfServiceBackground];
dispatch_queue_t queue = [pool queue];
YYDispatchQueuePool.h
。您也可以在 CocoaDocs 查看在线 API 文档,也可以使用 appledoc 在本地生成文档。
该项目最低支持iOS 6.0和Xcode 7.0。
YYDispatchQueuePool使用MIT许可证,详情见LICENSE文件。