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; }); });