YYDispatchQueuePool
YYDispatchQueuePool copied to clipboard
线程过多有何不好之处?
没有明显感觉到系统开启多个GCD线程导致卡顿
多线程的并发是用时间片轮转等方法实现的,iPhone 的 CPU 只有两个核心,所以过多线程同时存在仍然可能会造成对主线程的影响。另外线程创建、销毁、上下文切换等也会消耗很多 CPU 资源。有些任务内部会有全局的锁(比如 readme 里提到的 CoreText 绘制时的 CGFont 内部锁),这样增加并发并没有作用,反而会带来诸如 readme 中那样的问题。
GCD 通常来说不会造成主线程卡顿,上面说的这些只是比较极端一些的情况,YYDispatchQueuePool 只是在这种极端情况下控制并发数的不得已的一个解决思路。
线程切换也是需要成本的,虽然比进程要低。过多的线程会造成CPU将资源浪费在不断地切换上下文上,而他这个库可以减少这种情况,从而提高性能,减少开销@fooobra
NSOperationQueue不是有这个管理能力吗?
NSOperationQueue不是有这个管理能力吗?
同样的疑惑