码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2015-07-11 12:15:02      阅读:117      评论:0      收藏:0      [点我收藏+]

标签:串行队列与并发队列   gcd   

接着上面的GCD封装,下面进行列子验证

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

- (void)serailQueue{

    //创建出队列

   GCDQueue *queue =  [[GCDQueuealloc]initSerial];

    

    //执行队列中的线程

    [queueexecute:^{

       NSLog(@"1");

    }];

    

    [queueexecute:^{

       NSLog(@"2");

    }];

    [queueexecute:^{

       NSLog(@"3");

    }];

    [queueexecute:^{

       NSLog(@"4");

    }];

    [queueexecute:^{

       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 =  [[GCDQueuealloc]initConcurrent];

    

    //执行队列中的线程

    [queueexecute:^{

       NSLog(@"1");

    }];

    

    [queueexecute:^{

       NSLog(@"2");

    }];

    [queueexecute:^{

       NSLog(@"3");

    }];

    [queueexecute:^{

       NSLog(@"4");

    }];

    [queueexecute:^{

       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


//globalQueue  是默认级别的子线程

//一般在子线程中处理业务逻辑,主线程中更新UI

    [GCDQueueexecuteInGlobalQueue:^{

       //处理业务逻辑

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

       NSData      *picData    =[NSURLConnectionsendSynchronousRequest:request

                                                   returningResponse:nilerror:nil];

       self.image = [UIImage imageWithData:picData];

        

        [GCDQueueexecuteInMainQueue:^{

            

           //主线程中更新UI

            

           self.imageView.image = self.image;

        }];

    }];


总结:


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


版权声明:本文为博主原创文章,未经博主允许不得转载。

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

标签:串行队列与并发队列   gcd   

原文地址:http://blog.csdn.net/baitxaps/article/details/46839891

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!