NSOperation可以通过 maxConcurrentOperationCount 来控制并发数,而NSOperation又是基于GCD封装的,那么GCD怎么来控制并发呢?

  1. 通过信号量

把并发任务都放在一个串行队列中,然后每次取出一个任务来wait信号量,同时异步去执行,执行完毕之后再notify回来

  1. 队列池

按照最大并发数初始化相应的串行队列,然后每次放入一个队列中,满了之后从头放,其实就是n个并发的串行队列,每次把任务扔在哪个串行队列中是池子来控制。