多线程GCD的详细讲解 任务和队列(串行队列,并发队列)

    xiaoxiao2026-04-24  6

    1.什么是GCD

    2.任务和队列

    执行任务的方式

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

    //串行队列 同步执行任务 会在当前线程内执行  # 不一定是主线程

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

    //串行的队列都是按照顺序来执行。就是任务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);                 }   并行队列

    //并行队列,同步的方式执行  并不会开辟新线程

    //异步的方式 执行并行队列 会创建多个新的线程来执行 多个任务 是随机无序执行的

    [objc]  view plain  copy   //并行队列,同步的方式执行  并不会开辟新线程   -(void)demo   {       //创建串行队列 DISPATCH_QUEUE_SERIAL       //   并行队列 DISPATCH_QUEUE_CONCURRENT       dispatch_queue_t queue=dispatch_queue_create("itcast", DISPATCH_QUEUE_CONCURRENT);              //创建任务       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_CONCURRENT);              //创建任务       dispatch_block_t task1=^{           NSLog(@"%@  异步执行了方法1",[NSThread currentThread]);       };              dispatch_block_t task2=^{           NSLog(@"%@  异步执行了方法2",[NSThread currentThread]);       };                     //加入队列              //异步的方式 执行队列              //会顺序执行       dispatch_async(queue, task1);              dispatch_async(queue, task2);                 }  

    转载自:http://blog.csdn.net/yang__xz/article/details/50813681

    转载请注明原文地址: https://ju.6miu.com/read-1309170.html
    最新回复(0)