NSThread
1.Mac/ios 应用使用主线程来管理界面
2.主线程与后台线程之间的通信
performSelectorOnMainThread
performSelectorInBackground:withObject
3.锁
NSlock
@synchronized
GCD
1.何时使用:知道用户何时更新了系统,通常会用到block(脱字符号 ^ )
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0),^{});
2.GCD支持名为代码队列的概念,使用时需要指定将代码放到哪个队列上。
- 默认队列
- 主队列–>类似于主线程
3.GCD函数在主线程上更新用户界面
dispatch_sync(dispatch_get_main_queue(),^{});
4.GCD是实现后台处理的首选方式,使用GCD进行异步处理时,要求block每次都按照它们在代码中出现的顺心执行
dispathch_queue_create(DISPATCH_QUEUE_SERIAL,0)
5.创建顺序队列
属性 dispathch_queue_t serialQueue;
6.”Dispatch Queue”执行处理的等待队列,按照追加的顺序(FIFO)执行处理。
两种Dispatch Queue
Serial Dispatch Queue 等待现在执行中处理结束
Serial Dispatch Queue1–>使用一个线程
Serial Dispatch Queue2–>使用一个线程
Serial Dispatch Queue3–>使用一个线程
Serial Dispatch Queue4–>使用一个线程(多个 Serial Dispatch Queue可并行执行)
- Concurrent Dispatch Queue不等待现在执行中处理结束
dispatch_async(queue,blk0);
dispatch_async(queue,blk1);
dispatch_async(queue,blk2);
dispatch_async(queue,blk3);
dispatch_async(queue,blk4);
dispatch_async(queue,blk5);
dispatch_async(queue,blk6);
dispatch_async(queue,blk7);
7.如何得到 Dispatch Queue
- dispathch_queue_create(程序员管理内存)
- 获取系统标准提供的Dispatch Queue(系统管理内存)
1.main Dispatch Queue(Serial Dispatch Queue)
2.Global Dispatch Queue(Concurrent Dispatch Queue)
8 Dispatch_set_target_queue
dispatch_queue_create函数生成的Dispatch Queue不管是Serial Dispatch Queue 还是Concurent Dispatch Queue,都使用与默认优先级Global Dispatch Queue相同执行优先级的线程。如果需要变更,就要用到dispatch_set_target_queue函数。
在后台执行动作处理的Serial Dispatch Queue的生成方法。
待续….