GCD编程-串行队列与并发队列

原创 2015年07月11日 10:56:48
接着上面的GCD封装,下面进行列子验证

1.导入GCD.h
2.创一个串行队列:

- (void)serailQueue{

    //创建出队列

   GCDQueue *queue =  [[GCDQueue alloc]initSerial];

    

    //执行队列中的线程

    [queue execute:^{

       NSLog(@"1");

    }];

    

    [queue execute:^{

       NSLog(@"2");

    }];

    [queue execute:^{

       NSLog(@"3");

    }];

    [queue execute:^{

       NSLog(@"4");

    }];

    [queue execute:^{

       NSLog(@"5");

    }];

}

 得出串行结果:

2015-07-11 10:34:28.641 GCDDelay[2262:174638] 1

2015-07-11 10:34:28.642 GCDDelay[2262:174638] 2

2015-07-11 10:34:28.642 GCDDelay[2262:174638] 3

2015-07-11 10:34:28.642 GCDDelay[2262:174638] 4

2015-07-11 10:34:28.643 GCDDelay[2262:174638] 5


3.并发队列

- (void)initConcurrent{

   GCDQueue *queue =  [[GCDQueue alloc]initConcurrent];

    

    //执行队列中的线程

    [queueexecute:^{

       NSLog(@"1");

    }];

    

    [queue execute:^{

       NSLog(@"2");

    }];

    [queue execute:^{

       NSLog(@"3");

    }];

    [queue execute:^{

       NSLog(@"4");

    }];

    [queue execute:^{

       NSLog(@"5");

    }];


}



 得出并发结果:

2015-07-11 10:38:28.849 GCDDelay[2303:178328] 3

2015-07-11 10:38:28.849 GCDDelay[2303:178334] 4

2015-07-11 10:38:28.849 GCDDelay[2303:178325] 2

2015-07-11 10:38:28.849 GCDDelay[2303:178327] 1

2015-07-11 10:38:28.850 GCDDelay[2303:178335] 5


4.globalQueue 是默认级别的子线程 ,一般在子线程中处理业务逻辑,主线程中更新UI

    [GCDQueue executeInGlobalQueue:^{

       //处理业务逻辑

       NSURLRequest *request   = [NSURLRequestrequestWithURL:[NSURLURLWithString:@"***"]];

       NSData      *picData    =[NSURLConnectionsendSynchronousRequest:request

                                                   returningResponse:nilerror:nil];

       self.image = [UIImage imageWithData:picData];

        

        [GCDQueue executeInMainQueue:^{

            

           //主线程中更新UI

            

           self.imageView.image =self.image;

        }];

    }];


总结:


串行队列一次只执行一个线程,按照添加到队列的顺序依次执行
并发队列一次可以执行多个线程,线程的执行没有先后顺序
UI界面所在的线程队列是串行队列


关于GCD中串行队列、并发队列和同步执行、异步执行的探讨

Dispatch Queues Dispatch queue是一个对象,它可以接收任务,并将任务以先到先执行的顺序来执行。Dispatch queue可以使并发的或串行的。并发任务会基于系统负载来合...
  • qq_30515765
  • qq_30515765
  • 2016年06月30日 15:07
  • 1743

ios多线程操作(五)—— GCD串行队列与并发队列

GCD的队列可以分为2大类型,分别为串行队列和并发队列      串行队列(Serial Dispatch Queue):      一次只调度一个任务,队列中的任务一个接着一个地执行(一个任务执...
  • u011058732
  • u011058732
  • 2015年03月19日 21:53
  • 7332

GCD之主队列、全局并发队列、以及同步任务的执行

主队列:专门负责在主线程上调度任务,不会在子线程上调度任务,在主队列不允许开新线程。 主队列的特点:只在主线程运行,不开新线程。 异步执行:会开新线程,在新线程执行。 异步执行特点:不需要马上执行。 ...
  • u013087513
  • u013087513
  • 2015年10月21日 19:29
  • 1677

iOS详解 GCD 串行队列并行队列

iOS串行和并行队列, GCD
  • pangshishan1
  • pangshishan1
  • 2015年09月22日 21:41
  • 1004

GCD使用 串行并行队列 与 同步异步执行的各种组合 及要点分析

GCD使用中,使用并行串行队列和同步异步执行的各种情况组合,以及使用时注意点的分析...
  • a359696929
  • a359696929
  • 2016年05月10日 16:06
  • 3863

多线程——GCD(串行队列)

无论队列中所指定的执行的函数是同步还是异步,都会等待前一个任务执行完成后,再调度后面的任务 要不要开线程由执行任务决定 dispatch_sync 不开 dispatch_async 开 开几条线程...
  • yi_zz32
  • yi_zz32
  • 2015年11月21日 00:11
  • 11643

iOS-GCD的串行队列和并行队列的任务及实现

什么是GCD GCD全称是GrandCentral Dispatch,纯C语言的,提供了非常多强大的函数 •GCD的优势 1,GCD是苹果公司为多核的并行运算提出的解决方案 2,GCD会自动利用更多的...
  • c386890506
  • c386890506
  • 2016年04月17日 10:15
  • 6688

iOS-多线程编程学习之GCD——串行队列和并发队列(五)

Grand Central Dispatch(GCD)有很多部分构成,例如有很好的语言特性,运行库,还提供了系统的、高效的方式来支持具有多核处理器的iOS和OS X设备进行并发事件处理。   BSD...
  • linyousong
  • linyousong
  • 2016年02月27日 09:51
  • 2163

GCD之串行队列和并行队列及dispatch_group

iOS_多线程技术 1.NSThread 每个NSThread对象对应一个线程,量级较轻(真正的多线程) 2.以下两点是苹果专门开发的“并发”技术,使得程序员可以不再去关心线程的具体使用问题 ...
  • LXL_815520
  • LXL_815520
  • 2016年02月18日 15:34
  • 1840

iOS GCD/主队列/并行队列/全局队列/串行队列/同步任务/异步任务区别 含代码

http://www.makaidong.com/%E5%8D%9A%E5%AE%A2%E5%9B%AD%E7%83%AD/32951.shtml 进程:正在进行中的程序被称为进程,负责程序运行...
  • jeffasd
  • jeffasd
  • 2016年05月27日 22:00
  • 2064
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:GCD编程-串行队列与并发队列
举报原因:
原因补充:

(最多只允许输入30个字)