多线程总结之GCD基础

/**
 *  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]);
        
        // 子线程中执行
    });
    
}


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值