您的位置:首页 > 移动开发 > IOS开发

iOS-GCD学习之同步异步线程去执行串行操作

2016-09-05 18:42 519 查看
今天碰到一个需求,在网上找了一下资料,不得不感叹GCD之强大实用。

队列:串行队列,并行队列,全局队列,主队列



//串行队列 同步执行任务 会在当前线程内执行 
# 不一定是主线程
//异步的方式 执行串行队列 会创建一个新的线程来执行任务
//串行的队列都是按照顺序来执行。就是任务1 -> 任务2 -》任务3

[objc] view
plain copy

 





//串行队列 同步执行任务 会在当前线程内执行  //所以打印的会是当前线程的编号 不一定是主线程  

-(void)demo  

{  

    //创建串行队列 DISPATCH_QUEUE_SERIAL  

    //   并行队列 DISPATCH_QUEUE_CONCURRENT  

    dispatch_queue_t queue=dispatch_queue_create("itcast", DISPATCH_QUEUE_SERIAL);  

      

    //创建任务  

    dispatch_block_t task1=^{  

        NSLog(@"%@  同步执行了方法1",[NSThread currentThread]);  

    };  

      

    dispatch_block_t task2=^{  

        NSLog(@"%@  同步执行了方法2",[NSThread currentThread]);  

    };  

      

      

    //加入队列  

      

    //同步的方式 执行队列  

    dispatch_sync(queue, task1);  

      

    dispatch_sync(queue, task2);  

      

      

}  

  

  

//异步的方式 执行串行队列 会创建一个新的线程来执行任务  

-(void)demo2  

{  

    //创建串行队列 DISPATCH_QUEUE_SERIAL  

    //   并行队列 DISPATCH_QUEUE_CONCURRENT  

    dispatch_queue_t queue=dispatch_queue_create("itcast", DISPATCH_QUEUE_SERIAL);  

      

    //创建任务  

    dispatch_block_t task1=^{  

        NSLog(@"%@  异步执行了方法1",[NSThread currentThread]);  

    };  

      

    dispatch_block_t task2=^{  

        NSLog(@"%@  异步执行了方法2",[NSThread currentThread]);  

    };  

      

      

    //加入队列  

      

    //异步的方式 执行队列  

      

    //会顺序执行  

    dispatch_async(queue, task1);  

      

    dispatch_async(queue, task2);  

      

      

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