多线程
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