#import "ViewController.h"

@interfaceViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {

[superviewDidLoad];

UIImageView *imageview1 = [[UIImageView alloc]initWithFrame:CGRectMake(30, 40, 100, 100)];

[self.view addSubview:imageview1];

UIImageView *imageview2 = [[UIImageView alloc]initWithFrame:CGRectMake(30, 150, 100, 100)];

[self.view addSubview:imageview2];

UIImageView *imageview3 = [[UIImageView alloc]initWithFrame:CGRectMake(30, 260, 100, 100)];

[self.view addSubview:imageview3];

UIImageView *imageview4 = [[UIImageView alloc]initWithFrame:CGRectMake(30, 370, 100, 100)];

[self.view addSubview:imageview4];

dispatch_async(dispatch_get_global_queue(0, 0), ^{

NSData *data = [NSDatadataWithContentsOfURL:[NSURLURLWithString:@"http://www.yooyoo360.com/photo/2009-1-1/20090112132752467.jpg"]];

UIImage *image = [UIImage imageWithData:data];

dispatch_async(dispatch_get_main_queue(), ^{

imageview1.image = image;

});

});

//创建组:用于存放耗时操作

dispatch_group_t group = dispatch_group_create();

__block UIImage *image1,*image2,*image3;

//将操作封装进组,第一个参数代表要存放操作的组名,第二个参数代表操作队列,block执行耗时操作

dispatch_group_async(group, dispatch_get_global_queue(0, 0), ^{

NSData *data = [NSDatadataWithContentsOfURL:[NSURLURLWithString:@"http://pic2.ooopic.com/10/81/58/62bOOOPICce.jpg"]];

image1 = [UIImage imageWithData:data];

});

dispatch_group_async(group, dispatch_get_global_queue(0, 0), ^{

NSData *data = [NSDatadataWithContentsOfURL:[NSURLURLWithString:@"http://www.downsc.com/vector_pic/shiliang_iecool/5/3/b_img/14430.jpg"]];

image2 = [UIImage imageWithData:data];

});

dispatch_group_async(group, dispatch_get_global_queue(0, 0), ^{

NSData *data = [NSDatadataWithContentsOfURL:[NSURLURLWithString:@"http://www.downsc.com/vector_pic/shiliang_iecool/5/2/b_img/13788.jpg"]];

image3 = [UIImage imageWithData:data];

});

//监听一组操作,第一个参数代表要监听的组名,第二个参数代表一组操作完全结束后跳转到哪个队列,一般跳到主线程(dispatch_get_main_queue),block执行要进行的操作(一般用来更新UI),注意:此方法在组中的所有操作执行完毕后调用

dispatch_group_notify(group, dispatch_get_main_queue(), ^{

imageview2.image = image1;

imageview3.image = image2;

imageview4.image = image3;

});

}

线程GCD的更多相关文章

  1. iOS 开发线程 gcd

      基础知识: 下午9:09 一.基础概念 1.什么是GCD 全称是Grand Central Dispath 纯C语言编写,提供非常多且强大的函数,是目前推荐的多线程开发方法,NSOperation ...

  2. iOS-多线程-GCD

    一. 名词解释: 1. 进程和线程 进程是指在系统中正在运行的一个应用程序.每个进程之间都是独立的,每个进程均运行在期专用而且受到保护的内存空间中. 线程是指一个进程想要执行任务,就必须要有线程.线程 ...

  3. OC-多线程GCD的使用细节

    1>GCD,全称Grand Central Dispatch,”牛逼的中枢调度器”,纯C语言,提供了非常多强大的函数2>GCD优势:(1)GCD是苹果公司为多核的并行运算提出的解决方案(2 ...

  4. iOS中的多线程及GCD

    多线程中的一些概念 //任务:代码段  方法  线程就是执行这些任务 //NSThread类 创建线程 执行线程 [NSThread isMainThread]//判断是否是主线程 #import & ...

  5. iOS开发-GCD和后台处理

    一些生命周期函数的调用时间 打开应用时,调用 applicationWillEnterForeground: applicationDidBecomeActive: 按Home键,调用 applica ...

  6. IOS多线程 总结 -------------核心代码(GCD)

    //NSObject //在子线程中执行代码 // 参数1: 执行的方法 (最多有一个参数,没有返回值) //参数2: 传递给方法的参数 [self performSelectorInBackgrou ...

  7. GCD 的初步认识

    1.什么是 GCD? GCD为Grand Central Dispatch的缩写 (GCD)是Apple开发的一个多核编程的较新的解决方法.它主要用于优化应用程序以支持多核处理器以及其他对称多处理系统 ...

  8. iOS 多线程 简单学习NSThread NSOperation GCD

    1:首先简单介绍什么叫线程 可并发执行的,拥有最小系统资源,共享进程资源的基本调度单位. 共用堆,自有栈(官方资料说明iOS主线程栈大小为1M,其它线程为512K). 并发执行进度不可控,对非原子操作 ...

  9. block ,GCD(转)

    原文:http://blog.sina.com.cn/s/blog_45e2b66c01010dhd.html 1.GCD之dispatch queue http://www.cnblogs.com/ ...

随机推荐

  1. 【转】java NIO 相关知识

    原文地址:http://www.iteye.com/magazines/132-Java-NIO Java NIO(New IO)是从Java 1.4版本开始引入的一个新的IO API,可以替代标准的 ...

  2. 云计算与 OpenStack - 每天5分钟玩转 OpenStack(14)

    “云计算” 算是近年来最热的词了.现在 IT 行业见面不说这三个字您都不好意思跟人家打招呼. 对于云计算,学术界有各种定义,大家有兴趣可以百度一下. CloudMan 这里主要想从技术的角度谈谈对云计 ...

  3. char_dev.c 添加中文注释

    char_dev.c里的中文注释,仅代表个人理解,仅供参考.如有错误之处,请指出,谢谢! /* * linux/fs/char_dev.c * * Copyright (C) 1991, 1992 L ...

  4. shell生成指定范围内的随机数

    #!/bin/bash read -p "请输入起始数:" min read -p "请输入终止数:" max if [ $min -gt $max ] the ...

  5. 利用varnish做Discuz论坛的缓存服务器

    实验背景:公司有一台BBS服务器,用的是LNMP的架构搭建的.正好手头有一台空闲的虚拟机,于是想着给BBS前端加一台缓存服务器.于是选定了varnish,搜了很多教程,跌跌撞撞的完成了配置.这其中很多 ...

  6. MySql错误代码1045的解决方案

    错误代码 1045Access denied for user 'root'@'localhost' (using password:YES) 解决办法是重新设置root用户密码,在Windows平台 ...

  7. 读 [The Root of Lisp]

    首先,在对 Lisp 有一丢丢的了解下读这篇文章会大大激发你学下去的欲望.之后可以看作者的著作<ANSI Common Lisp>. 想要体会一下 Lisp 的强大,本文是不二之选. Co ...

  8. 使用spring方式来实现aop编程

    1:什么是aop? Aspect Oriented Programming 面向切面编程 在软件业,AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译 ...

  9. suid sgid sbit chattr lsattr

    suid 一般用于二进制可执行文件,suid代表当用户执行此二进制文件时,暂时具有此文件所有者的权限 chmod 4xxx binfile sgid 一般用于目录,sgid代表当其他用户在此目录下创建 ...

  10. haproxy 新手上路

    apache.nginx之类的反向代理(转发)功能,通常只能用于http协议,其它协议就不好使了(注:nginx据说商业版的,支持tcp协议了). haproxy可以弥补这方面的不足,haproxy支 ...