IOS 利用多核运算-GCD开发
by Jhorn Han
多核运算
在iOS中concurrency编程的框架就是GCD(Grand Central Dispatch), GCD的使用非常简单。它把任务分派到不同的queue队列
来处理。开发者把任务代码装到一个个block里面,操作系统把这些任务代码分派到不同的资源里去处理,一个简单的例子来说,为什么初学
者写tableview的时候,滑动列表时总会很卡,因为很多初学者把图片装载放到main thread主线程去执行,例如我们要滑动畅顺的话,iOS最快可以1秒内刷新60次,如何你的一个cell的文字和图片装载超过1/60秒的话,自然就会卡。所以一般我们会把图片装载这些需要多点时间的移出main thread来处理,对于用GCD来说,就是把图片载入放到另外一个queue队列中来异步执行,当资源准备好了后,放回到main thread中显示出来。main thread在GCD中就是main queue。
创建一个新queue队列的代码:
备注:
单核中的多线程实际上在每个时间片上只有一个线程在运行,而多核实际上是真的多线程,每一个时间片上每个核都有一个线程在执行。
dispatch_async是多核级别编程框架调度函数,
耳 _beginThread. NSThread, performSelectorInBackground...等只是等只是一般线程调度而已,没有利用CPU多核的特性。GCD以后,苹果不提倡使用老式的线程调度了,都用queue。dispatch_async可以把block里面的任务扔到另外一个核了处理,
performSelectorInBackground _beginThread. NSThread, performSelectorInBackground 不能把任务扔到另外一个核去处理
代码:
从网络加载图片现实到UIImageView,解决了多个cell显示图片在滑动tableview 出现卡的情况