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

时间:2021-04-12 20:02:28
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(@"