GCD线程

1 篇文章 0 订阅

定义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_PRIORITY_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;

    });

}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值