工具做者在实际开发中,因为开了不少线程去作异步绘制、下载等工做,并且有的线程可能由于资源锁等待的缘由,可能致使开更多的线程。当线程过多时,线程占用了过多资源,可能致使主线程受影响,出现卡顿问题ios
而iOS框架中有最大并发数概念的目测只有NSOpeartionQueue
了,但GCD的代码却没法使用该特性git
因而写了该工具,能够方便地建立一个队列池
,相似于线程池的概念,能够避免开辟线程过多的问题github
核心工做就两步骤bash
YYDispatchContext
结构体中counter
,每次调用YYDispatchQueueGetForQOS
,counter
加一,同时使用counter % queueCount
做为下标来轮询地到context中获取一个queueYYDispatchContext
结构体以下多线程
typedef struct {
const char *name;
void **queues;
uint32_t queueCount;
int32_t counter;
} YYDispatchContext;
复制代码