您的位置:首页 > 其它

多线程总结之GCD基础

2015-08-10 13:38 253 查看
/**
*  GCD Grand Central Dispatch 伟大的中枢调度器
优势
1. 为多核的并行运算提出的解决方案
2. 自动利用更多的CPU内核
3. 自动管理线程的生命周期 (创建线程 调用任务 销毁线程)
4. 程序员只需告诉GCD想要干什么
*/

// 任务 和 队列?
// 任务  :    执行什么操作
// 队列  :    用来存放任务

//   GCD的使用
/**
*  1.  定制任务

2.  将任务添加到队列中
GCD会自动将队列的任务取出,放入到对应的线程中执行
任务的取出  FIFO原则
*/

// GCD的函数
/**
*  dispatch_sync (dispath_queue_t queue,dispatch_block_t block);

queue 队列

- 并发队列 (自动开启多个线程同时执行任务) 并发功能只能在异步函数才有效

- 串行队列 (让任务一个接着一个执行)
队列只决定任务的执行方式

block 任务
dispatch_async (dispath_queue_t queue,dispatch_block_t block);
*/
// 同步 异步 区别
//  同步:只能在当前线程中执行任务,不具备开启新线程的能力
//  异步:只能在当前线程中执行任务,具备开启新线程的能力
<pre name="code" class="objc">- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {

// dispatch_sync 同一条线 同步 不具备开启线程的能力

// dispatch_async 同一条线  异步 不具备开启线程的能力

// 队列 不是决定你要不要开线程,它只是执行方式

// 获的全局的并发队列
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);

// 将任务添加到全局队列中去异步执行
dispatch_async(queue, ^{
NSLog(@" --- download %@",[NSThread currentThread]);

// 子线程中执行
});
dispatch_async(queue, ^{
NSLog(@" --- download1 %@",[NSThread currentThread]);

// 子线程中执行
});
dispatch_async(queue, ^{
NSLog(@" --- download2 %@",[NSThread currentThread]);

// 子线程中执行
});
dispatch_async(queue, ^{
NSLog(@" --- download3 %@",[NSThread currentThread]);

// 子线程中执行
});

}



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