gcd多线程

http://www.cocoachina.com/ios/20140520/8485.html

    //GCD Grand宏大的 Central中央 Dispatch调度
    //是处理多线程的,类似于NSThread,但是比NSThread强大很多
    
    //创建一个串行调度队列(这种方式不推荐使用,一般都是去获取而不是创建)
    //第一个执行完之后才会执行下一个,如果第一个耗时较长,那么下一个需要等待
    //第一个参数:唯一的一个标示符,是c的字符串
    //第二个参数:是对这个队列的描述,直接写NULL
    dispatch_queue_t queue = dispatch_queue_create("com.zhiyou100.gcdtest1", NULL);
    //同步执行,会处于等待状态,可能会卡死主线程
    dispatch_sync(queue, ^{
        //同步执行是在主线程中进行的
//        NSLog(@"-----%d----", [NSThread isMainThread]);
        
    });
    //异步执行,立即返回,不会对主线程有影响
    dispatch_async(queue, ^{
        //NSLog(@"----2-----");
        //[NSThread sleepForTimeInterval:5];
        //NSLog(@"----3-----");
    });
    
    dispatch_async(queue, ^{
        //[NSThread sleepForTimeInterval:5];
        //串行队列的异步执行是在分线程中执行的
        //NSLog(@"----%d-----", [NSThread isMainThread]);
    });
    dispatch_async(queue, ^{
        //[NSThread sleepForTimeInterval:3];
        //NSLog(@"----2-----");
    });
    dispatch_async(queue, ^{
        //[NSThread sleepForTimeInterval:1];
        //NSLog(@"----3-----");
    });
    
    
    //* 获得一个并行队列
    //第一个参数:优先级,选默认即可
    //第二个参数:标记,写0即可
    dispatch_queue_t queue2 = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
    dispatch_async(queue2, ^{
        //[NSThread sleepForTimeInterval:1];
        //在分线程中完成,如果有大量数据需要下载,可以放在此处
        //NSLog(@"----%d-----", [NSThread isMainThread]);
    });
    dispatch_async(queue2, ^{
        //[NSThread sleepForTimeInterval:2];
        //NSLog(@"----2-----");
    });
    dispatch_async(queue2, ^{
        //[NSThread sleepForTimeInterval:3];
        //NSLog(@"----3-----");
    });
    
    
    //* 获取主线程队列
    dispatch_queue_t queue3 = dispatch_get_main_queue();
    dispatch_async(queue3, ^{
        //主线程中执行,如果有刷新UI的操作,写在此处
        NSLog(@"----%d-----", [NSThread isMainThread]);
    });
    dispatch_async(queue3, ^{             
        NSLog(@"----2-----");
    });
    dispatch_async(queue3, ^{
        NSLog(@"----3-----");
    });
    
    
    //下载并刷新UI
    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
        
        NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://d.hiphotos.baidu.com/image/w%3D2048/sign=70b811bda41ea8d38a227304a332314e/1ad5ad6eddc451dac289aaedb4fd5266d01632bc.jpg"]];
        
        UIImage *image = [UIImage imageWithData:data];
        
        dispatch_async(dispatch_get_main_queue(), ^{
            self.imageView.image = image;
        });
        
    });
    
原文地址:https://www.cnblogs.com/keyan1102/p/4463231.html