码迷,mamicode.com
首页 > 移动开发 > 详细

iOS多线程管理-Thread,NSOperation,GCD的简单用法

时间:2015-07-15 18:25:49      阅读:5283      评论:0      收藏:0      [点我收藏+]

标签:

多线程

1.程序是一个可执行文件

2.进程是程序执行的一个操作实体

3.进程是线程的集合

4.多线程就是在一个程序(一个进程)中开启多条线路,为并发执行多个任务提供方便. 

 

 

什么是线程?

1.进程当中并发执行的代码片段

2.线程是提高代码效率的一个手段

3.IOS中主要用于防止界面假死

4.线程是处理异步任务的主要手段

  

===============================

NSThread

 

1.+ (void)detachNewThreadSelector:(SEL)selector toTarget:(id)target withObject:(id)argument;

作用:开启并且执行一个线程

 

2.- (instancetype)initWithTarget:(id)target selector:(SEL)selector object:(id)argument 

作用:创建一个线程但是不会执行,需要手动调用

 

3.NSThreadWillExitNotification

作用:通过通知中心监听此消息达到监听线程结束的目的

 

4.NSlock 

作用:线程锁

 

5.如何取消NSThread

 

http://images.cnblogs.com/cnblogs_com/kenshincui/613474/o_14.jpg

 

===============================

NSOperation

 

1. NSOperation本身不是线程,它是一个线程操作

 

2.它常用的子类

1)NSInvocationOperation  通过方法指定线程要执行的任务

2)NSBlockOperation 通过block指定要执行的任务

3)可以继承NSOperation,然后重写main函数达到自定义任务的效果

 

3.NSOperationQueue 线程池,管理线程

可以设置最大开启的线程数 maxConcurrentOperationCount

如果设置为1,则成为串行队列,否则,为并发队列

 

===============================

GCD

 

1.什么是GCD

GCD 是苹果iOS4.0之后和block一起出现的技术,是苹果封装的更底层(c)更高效的多线程处理技术,GCD (grand-central-dispatch)是目前使用的最普遍的多线程处理技术,因为高效、简洁、实用

 

2.GCD的队列类型

1).主线程队列 dispatch_get_main_queue()

技术分享 

2).子线程队列 dispatch_get_global_queue(0, 0)

 技术分享

3.一次性执行(类似线程锁) static dispatch_once_t onceToken

Singleton为自定义的一个继承NSObject的类,时机应用中需要什么类型就写什么类型

 技术分享

4.延时执行 dispatch_time_t ,dispatch_after

 

5.自定义队列dispatch_queue_create

技术分享

 

注意:自定义队列只开启一条线程,执行多个任务时为串行队列

如下打印出来的结果都在线程"number = 2"中执行

技术分享 

6.分组合并dispatch_group_create

 技术分享

 

iOS多线程管理-Thread,NSOperation,GCD的简单用法

标签:

原文地址:http://www.cnblogs.com/CoderHJ/p/4649050.html

(0)
(4)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!