YYDispatchQueuePool icon indicating copy to clipboard operation
YYDispatchQueuePool copied to clipboard

线程过多有何不好之处?

Open foobra opened this issue 9 years ago • 4 comments

没有明显感觉到系统开启多个GCD线程导致卡顿

foobra avatar Nov 28 '15 02:11 foobra

多线程的并发是用时间片轮转等方法实现的,iPhone 的 CPU 只有两个核心,所以过多线程同时存在仍然可能会造成对主线程的影响。另外线程创建、销毁、上下文切换等也会消耗很多 CPU 资源。有些任务内部会有全局的锁(比如 readme 里提到的 CoreText 绘制时的 CGFont 内部锁),这样增加并发并没有作用,反而会带来诸如 readme 中那样的问题。

GCD 通常来说不会造成主线程卡顿,上面说的这些只是比较极端一些的情况,YYDispatchQueuePool 只是在这种极端情况下控制并发数的不得已的一个解决思路。

ibireme avatar Nov 28 '15 04:11 ibireme

线程切换也是需要成本的,虽然比进程要低。过多的线程会造成CPU将资源浪费在不断地切换上下文上,而他这个库可以减少这种情况,从而提高性能,减少开销@fooobra

setipro avatar Nov 28 '15 04:11 setipro

NSOperationQueue不是有这个管理能力吗?

dourgulf avatar Jun 09 '17 06:06 dourgulf

NSOperationQueue不是有这个管理能力吗?

同样的疑惑

FoneG avatar Jun 07 '21 09:06 FoneG