ios--多线程复习笔记

来源:互联网 发布:中国核弹数量知乎 编辑:程序博客网 时间:2024/06/11 11:14

原文摘自:www.51cto.com,视频连接http://edu.51cto.com/lesson/id-13922.html


1、什么是多线程?

在线视频播放器:

  •  从网上下载对应视频数据;
  • 播放这些数据
同一时间,让多个代码语句同时执行。

2、多线程的好处:
  •  提高应用程序的感知响应;
  •  提高应用程序在多核系统上的实时性能。
3、ios中多线程技术:
  1. NSThread (几乎不用)
  2. NSOperation (主要用于网络下载
  3. 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的操作
 
     });
});
        

0 0
原创粉丝点击