原文摘自:www.51cto.com,视频连接http://edu.51cto.com/lesson/id-13922.html
1、什么是多线程?
在线视频播放器:
- 从网上下载对应视频数据;
- 播放这些数据
同一时间,让多个代码语句同时执行。
2、多线程的好处:
- 提高应用程序的感知响应;
- 提高应用程序在多核系统上的实时性能。
3、ios中多线程技术:
- NSThread (几乎不用)
- NSOperation (主要用于网络下载)
- GCD (Grand Central Dispatch)
4、GCD是苹果公司提供的一套并发解决方案,用于ios4以上。
其工作原理:把任务放到对应队列中,根据可用的处理资源,安排这些任务在任何可用的处理器核心上执行。
一个任务可以是一个函数function或一个
block(用得更多)。
GCD中队列称为dispatch queue,它可以保证先进来的任务先得到执行。
5、dispatch queue分类:
- main dispatch queue :用于执行所有与UI操作相关的任务,在主线程中执行。宏dispatch_get_main_queue()
- global dispatch queue:可以并发地执行多个任务,但是执行完成的顺序是随机的,用于执行后台任务。函数dispatch_get_global_queue(0,0)。
- 自定义的dispatch queue : 用于执行和UI操作无关的任务。一次只执行一个任务,而且是按顺序执行的。
提交任务到dispatch queue分为同步提交void dispatch_syno 和异步提交void dispatch async。
6、典型的应用情景:
为了避免界面在处理耗时的操作时卡死,比如读取网络数据,IO,数据库读写等,我们会在另外一个线程中处理这些操作,然后通知主线程更行界面。
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0),^{
//耗时的操作
dispatch_async(dispatch_get_main_queue(),^{
//更新界面UI的操作
});
});