美文网首页
GCD中的并行队列

GCD中的并行队列

作者: 不会打滚儿的狮子 | 来源:发表于2016-07-02 19:49 被阅读117次

    #pragma mark -并行队列

    - (void)gcdDemo2

    {

    // 1.并行队列

    dispatch_queue_tq =dispatch_queue_create("myQueue",DISPATCH_QUEUE_CONCURRENT);

    //非ARC中,需要自己释放队列

    //    dispatch_release(q);

    // 3.同步任务,不会开启新的线程

    //在实际开发中,同步任务可以保证执行完成之后,才让后续的异步任务开始执行,用于控制任务之间的先后顺序

    //在后台线程中,处理“用户登录”

    for(inti =0; i <10; i++) {

    dispatch_sync(q, ^{

    NSLog(@"%@ - %d", [NSThreadcurrentThread], i);

    });

    }

    // 2.异步任务,会在多条线程上工作,具体开多少条线程,由系统决定

    //仍然是按照任务添加到队列中的顺序被调度,只是执行先后可能会有差异!

    // ***能够将耗时的操作,放到子线程中工作

    // ***与串行队列异步任务相比,并发性能更好!但是执行的先后顺序,不固定

    for(inti =0; i <10; i++) {

    dispatch_async(q, ^{

    NSLog(@"%@ - %d", [NSThreadcurrentThread], i);

    });

    }

    }

    并行队列中的任务是多个任务同时执行的

    但是如果异步任务前面有同步任务 就会先执行同步任务同步任务是按顺序执行的任务等他执行完了才会执行并行中的异步任务  (可以做到阻塞 控制任务的执行顺序)

    如果异步任务后面有同步任务  两个任务会并行(同时)执行

    相关文章

      网友评论

          本文标题:GCD中的并行队列

          本文链接:https://www.haomeiwen.com/subject/aivqjttx.html