您的位置:首页 > 移动开发 > IOS开发

iOS 对于多线程简单的认识

2016-03-15 10:01 399 查看
此片文章参考荣芳志的博客

iOS 多线程目前我接触的总共分为3种

1.NSThread 

缺点:需要自己管理线程生命周期,线程同步(目前基本不用)

2.NSOperation

优点:不需要关心线程管理,数据同步的事情,可以把精力放在自己需要执行的操作上

3.GCD

优点:比NSOperationQuene更底层更高效

1.NSThread的的使用

两种创建方式

//实例方法

- (id)initWithTarget:(id)target selector:(SEL)selector object:(id)argument

//类方法

参数的意义

selector :线程执行的方法,这个selector只能有一个参数,而且不能有返回值。
target  :selector消息发送的对象
argument:传输给target的唯一参数,也可以是nil

不显式创建线程的方法:

用NSObject的类方法  performSelectorInBackground:withObject: 创建一个线程

2.NSOperation的使用

使用 NSOperation的方式有两种,
一种是用定义好的两个子类:NSInvocationOperation 和 NSBlockOperation。
另一种是继承NSOperation

3.GCD的使用

GCD中的FIFO队列称为dispatch queue,它可以保证先进来的任务先得到执行。

dispatch queue分为下面三种:
Serial 

又称为private dispatch queues,同时只执行一个任务。Serial queue通常用于同步访问特定的资源或数据。当你创建多个Serial queue时,虽然它们各自是同步执行的,但Serial queue与Serial queue之间是并发执行的。

Concurrent 

又称为global dispatch queue,可以并发地执行多个任务,但是执行完成的顺序是随机的。

Main dispatch queue 

它是全局可用的serial queue,它是在应用程序主线程上执行任务的。

1、常用的方法dispatch_async

为了避免界面在处理耗时的操作时卡死,比如读取网络数据,IO,数据库读写等,我们会在另外一个线程中处理这些操作,然后通知主线程更新界面。

用GCD实现这个流程的操作比前面介绍的NSThread  NSOperation的方法都要简单。代码框架结构如下:
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: