首页 > 编程语言 > 详细

多线程GCD的基本使用以及注意点

时间:2015-09-24 08:15:11      阅读:203      评论:0      收藏:0      [点我收藏+]
GCD的使用
 一:队列
 
 1.串行队列:添加到队列中的任务是一个一个执行的
 
 2.并行(发)队列:添加到队列中的任务是多个同时执行的(一个队列中的多个任务可以同时执行)
 
 3.主队列:里面的任务都是在主线程执行的,可以理解为主队列就是串行队列的一种
 
 4.全局队列:并行(发)队列
 
 二:同步、异步
 1、同步:需要后面的任务等待,不会开启新的线程,会直接使用当前的线程
 
 2、异步:不需要后面的任务等待,会开启新的线程
 
 
//——————————异步,并行—————————————
 
dispatch_queue_t queue2 = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
   
    /*------------------------向并行(发)队列添加任务------------------------*/
   
    //(1)异步添加任务
    /*
     首先这是异步添加-->很可能会开启多线程
     然后是并行队列-->意味着一个队列里的任务可以一起进行
     */
    dispatch_async(queue2, ^{   //异步添加---开启多线程

           
            for (int i=0; i<50; i++) {//-------®1
                NSLog(@"1....i:%d",i);
            }
       
    });
   
    for (int i=0; i<150/*或i < 50*/; i++) { //----------®2
        NSLog(@"??....i:%d",i);//i < 50情况时:®2 和 ®1 会交替执行,i<50很快执行完了,但是 ®1的i还没执行完, ®3 和 ®1是并行的所以会在®1 还没结束(®2结束了,®3加入队列) ®3 就开始执行了
                            // i < 150 情况时:®1 和 ®2会混合,然后®2 打印执行完 ®3才加入队列中
    }
   
    dispatch_async(queue2, ^{//-------------®3
           
            for (int i=0; i<50; i++) {
                NSLog(@"2....i:%d",i);
            }
    });
 
代码:
 
 

多线程GCD的基本使用以及注意点

原文:http://www.cnblogs.com/chillytao-suiyuan/p/4834131.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!