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-同步,异步分别在串行队列,并发队列,主队列下的执行方式

GCD-同步,异步分别在串行队列,并发队列,主队列下的执行方式    - (void)viewDidLoad {     [super viewDidLoad];       ...

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

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

GCD串行并发队列扫盲

概述 本篇一起来学习GCD队列相关知识及如何使用。一直以来都是看到过别人这么用,说实在的,还真没有学过文档,也没有深入研究过其所以然。今天一起来看看苹果的GCD队列相关知识,扫一扫盲区吧! 学习完...

iOS 【Multithreading-GCD 同步/异步函数 和 串行/并发队列 的6种搭配使用及介绍】

★★ 同步和异步关注的是消息通信机制 (synchronous communication/ asynchronous communication) ★ 所谓同步,就是在发出一个调用时,在没有得到结...

GCD实践——串行队列/并发队列与iOS多线程详解

1.串行队列一次只执行一个线程,按照添加到队列的顺序依次执行; 2.并发队列一次可以执行多个线程,线程的执行没有先后顺序; 3.UI界面所在的线程队列是串行队列。 下面我对上述几个案例进行代码示例...

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

GCD的队列可以分为2大类型,分别为串行队列和并发队列      串行队列(Serial Dispatch Queue):      一次只调度一个任务,队列中的任务一个接着一个地执行(一个任务执...

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

Dispatch Queues Dispatch queue是一个对象,它可以接收任务,并将任务以先到先执行的顺序来执行。Dispatch queue可以使并发的或串行的。并发任务会基于系统负载来合...

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

GCD使用中,使用并行串行队列和同步异步执行的各种情况组合,以及使用时注意点的分析...

GCD 多线程——串行队列

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

IOS学习 GCD 延时执行三种方法 并行/串行/主队列综合练习 队列组 shift+command+o快速查找

-(void)touchesBegan:(NSSetUITouch *> *)touches withEvent:(UIEvent *)event{        [self demo]; } ...
  • ridxmc
  • ridxmc
  • 2016年03月31日 23:35
  • 2449
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:GCD编程-串行队列与并发队列
举报原因:
原因补充:

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