您的位置:首页 > 其它

GCD线程

2015-12-01 21:02 330 查看

定义2个imageView

6个button

前三个打印 后三个控制显示

- (IBAction)chuanxing:(UIButton *)sender {
//创建队列对象  DISPATCH_QUEUE_SERIAL//串行的队列   "com.queue.serail"标识
    dispatch_queue_t serailQueue =
dispatch_queue_create("com.queue.serail",
DISPATCH_QUEUE_SERIAL);
    //开启一个队列
用dispatch_async dispatch_async(开启)
    dispatch_async(serailQueue, ^{
        NSLog(@"thread ==%@ 1",[NSThread
currentThread]);
        //调用
系统的主队列 更新
打印最后显示
        dispatch_async(dispatch_get_main_queue(), ^{
            NSLog(@"更新主线程");
        });
    });
    //开启一个队列
    dispatch_async(serailQueue, ^{
        NSLog(@"thread ==%@ 2",[NSThread
currentThread]);
        dispatch_async(dispatch_get_main_queue(), ^{
            NSLog(@"更新主线程");
        });
    });
    //开启一个队列
    dispatch_async(serailQueue, ^{
        NSLog(@"thread  == %@  3" ,[NSThread
currentThread]);
    });
}
- (IBAction)bingxing:(UIButton *)sender {
    //并行
    dispatch_queue_t currentQueue =
dispatch_queue_create("com.queue.currennt",
DISPATCH_QUEUE_CONCURRENT);
    //开启一个队列
    dispatch_async(currentQueue, ^{
        NSLog(@"thread ===%@ 1 ",[NSThread
currentThread]);
        dispatch_async(dispatch_get_main_queue(), ^{
            NSLog(@"更新主线程");
        });
    });
    //开启一个队列
    dispatch_async(currentQueue, ^{
        NSLog(@"thread ===%@ 2 ",[NSThread
currentThread]);
    });
    //开启一个队列
    dispatch_async(currentQueue, ^{
        NSLog(@"thread ===%@ 3 ",[NSThread
currentThread]);
    });
    //开启一个队列
    dispatch_async(currentQueue, ^{
        NSLog(@"thread ===%@ 4 ",[NSThread
currentThread]);
    });
}
- (IBAction)group:(id)sender {
    //创建一个组
    dispatch_group_t groupQueue =
dispatch_group_create();
    //创建队列去执行 
默认优先级DISPATCH_QUEUE_PRIORITY_DEFAULT
    dispatch_queue_t groupQueueT =
dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,
0);
    //优先级第  DISPATCH_QUEUE_PRIORI
4000
TY_HIGH
优先级高于其他
    dispatch_queue_t groupQueueT2 =
dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_LOW,
0);
   //将groupQueueT
放入到groupQueue组
    dispatch_group_async(groupQueue, groupQueueT, ^{
        NSLog(@"第一组 %@",[NSThread
currentThread]);
    });
     //将groupQueueT2
放入到groupQueue组  
然后根据不同的优先级去打印
    dispatch_group_async(groupQueue, groupQueueT2, ^{
        NSLog(@"第二组 %@",[NSThread
currentThread]);
    });
    dispatch_group_async(groupQueue, groupQueueT, ^{
        NSLog(@"第三组 %@",[NSThread
currentThread]);
    });
    dispatch_group_async(groupQueue, groupQueueT, ^{
        NSLog(@"第四组 %@",[NSThread
currentThread]);
    });
    //完成所有的时候
传给主线程
    dispatch_group_notify(groupQueue,
dispatch_get_main_queue(), ^{
        NSLog(@"所有组
执行完成");
    });
}
//串行显示图片
- (IBAction)serail:(id)sender {
    dispatch_queue_t queueT =
dispatch_queue_create("com.queueT",
DISPATCH_QUEUE_SERIAL);
    __weak
ViewController *weakSelf =
self;
    dispatch_async(queueT, ^{
        UIImage *image =[weakSelf
downloadImage:@"http://szb.loulanwang.com/1/1/2011-11/18/14/res19_attpic_brief.jpg"];
        dispatch_async(dispatch_get_main_queue(), ^{
            _image1.image = image;
        });
    });
    __weak
ViewController *weakSelf2 =
self;
    dispatch_async(queueT, ^{
        UIImage *image =[weakSelf2
downloadImage:@"http://ww1.sinaimg.cn/mw600/77d20c22jw1e075vp5rtsj.jpg"];
        dispatch_async(dispatch_get_main_queue(), ^{
            _image2.image = image;
        });
    });
}
-(UIImage *)downloadImage:(NSString *)url{
    NSURL *urlaa = [NSURL
URLWithString:url];
    UIImage *image = [UIImage
imageWithData:[NSData
dataWithContentsOfURL:urlaa]];
    NSLog(@"%@",[NSData
dataWithContentsOfURL:urlaa]);
    return image;
}
//并行显示图片
- (IBAction)current:(id)sender {
    dispatch_queue_t Current =
dispatch_queue_create("com.cruuent",
DISPATCH_QUEUE_CONCURRENT);
    __weak
ViewController *weakSelf =
self;
    dispatch_async(Current, ^{
        UIImage *image =[weakSelf
downloadImage:@"http://img.boqiicdn.com/Data/Bbs/Users/208/20844/2084451/img78251405410903_thumb.jpg"];
        dispatch_async(dispatch_get_main_queue(), ^{
            _image1.image = image;
        });
    });
    __weak
ViewController *weakSelf2 =
self;
    dispatch_async(Current, ^{
        UIImage *image =[weakSelf2
downloadImage:@"http://att2.citysbs.com/hangzhou/2015/07/08/15/middle_615x616-151214_v2_17771436339534966_72b8318928bd9d0a9bf6674c1b4f73be.jpg"];
        dispatch_async(dispatch_get_main_queue(), ^{
            _image2.image = image;
        });
    });
    
    
    
}
//组队列同时显示
- (IBAction)groupImage:(UIButton *)sender {
    //创建组
    dispatch_group_t group =
dispatch_group_create();
    //创建组队列 
优先级
    dispatch_queue_t groupT =
dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,
0);
    __block
UIImage *image1 = nil;
    __weak
ViewController *weakSelf =self;
    dispatch_group_async(group, groupT, ^{
        image1 = [weakSelf downloadImage:@"http://a.hiphotos.baidu.com/image/pic/item/8644ebf81a4c510f19c75c136259252dd42aa5bc.jpg"];
    });
    __block
UIImage *image2 = nil;
    __weak
ViewController *weakSelf2 =self;
    dispatch_group_async(group, groupT, ^{
        image2 = [weakSelf2 downloadImage:@"http://a.hiphotos.baidu.com/image/pic/item/8644ebf81a4c510f19c75c136259252dd42aa5bc.jpg"];
    });
    dispatch_group_notify(group,
dispatch_get_main_queue(), ^{
        _image1.image = image1;
        _image2.image = image2;
    });
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: