您的位置:首页 > 其它

多线程

2015-09-13 21:15 579 查看

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的生成方法。



待续….
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: