多线程注意点: 不要同时开太多线程,耗时操作不要再主线程执行,放到子线程执行
线程概念
a. 主线程:UI线程,显示、刷新UI界面,处理UI控件的事件
b. 子线程:后台线程,异步线程
一、NSThread
- 1.1 创建和启动线程的三种方式
|
|
- 1.2 常见用法
|
|
二、线程同步
- 本质: 防止多个线程访问同一个资源造成数据安全问题
- 实现: 加一个互斥锁(同步锁)
|
|
三、GCD(Grand Central Dispatch)
队列和任务
- 1.1 任务: 需要执行的操作block
1.2 队列: 存放任务
1.2.1 全局并发队列(系统提供)
1dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);1.2.2 串行队列(手动创建)
1dispatch_queue_t queue = dispatch_queue_create("aQueue”, NULL);1.2.3 主队列(主线程中执行)
1dispatch_queue_t queue = dispatch_get_main_queue();
2 执行任务的函数
dispatch_sync… 同步执行: 不具备开启新线程的能力
dispatch_async… 异步执行: 具备开启新线程的能力
- 3 常用组合
dispatch_async… + 并发队列
dispatch_async… + 串行队列
- 4 线程间通信
|
|
- 5 GCD的所有API都在 libdispatch.dylib, Xcode会自动导入主头文件:
#import \
- 6 延迟执行
|
|
- 7 只执行一次
|
|
- 8 队列组
dispatch_group_async \ dispatch_group_notify
四、单例模式
|
|
五、NSOperation
NSOperation 是一个抽象的基类, 一般使用子类 NSBlockOperation 或 NSOperationQueue
- 1 队列的类型
|
|
- 2 添加任务到队列
|
|
- 3 常见用法
|
|
- 4 设置依赖
|
|
- 5 线程之间的通信
|
|
六、从其他线程回到主线程的三种方式
|
|
七、判断编译器的环境
|
|
八、类的初始化方法
|
|