什么是GCD
是异步执行任务的技术之一。一般将应用程序中技术的线程管理用的代码在系统级中实现。开发者只需要定义想要执行的任务并追加到适当的Dispatch Queue中,GCD就能生成必要的线程并计划执行任务。作为系统的一部分来实现的,比以前的线程更有效率。
dispatch_async(queue, ^
{
/**
*长时间处理
*
*例如AR用画像识别
*例如数据库访问
*/
/**
*长时间处理结束,主线程使用该处理结果。
*/
dispatch_async(dispatch_get_main_queue(), ^
{
/**
*只在主线程可以执行的处理
*例如用户界面更新
*/
});
});
多线程编程
1个CPU执行的CPU命令列为一条无分叉路径,就是线程。
这种无分叉路径不只1条,存在有多条时即为多线程。在多线程中,1个CPU核执行多条不同路径上的不同命令。
由于使用多线程可以在某个线程和其他线程之间反复多次进行上下文切换,因此看上去就像1个CPU核能够并列地执行多个线程一样。而且在具有多个CPU核的情况下,就不是看上去像了,而是真的提供了多个CPU核并行执行多个线程的技术。
多线程可能存在的问题:
数据竞争、死锁、太多线程导致消耗大量内存。
但是使用多线程编程可保证应用程序的响应性能。