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;
});
}
相关文章推荐
- 算法导论22.3深度优先搜索 练习总结
- MFC如何使控件大小随着对话框大小自动调整
- android CHMOD命令用法
- 复制或粘贴内容到含有隐藏单元格的区域时如何只复制或粘贴可见单元格
- 牛客堂刷题(常见面试题精讲)之最短子数组长度
- JS温习:基础(三)
- redis的超时删除策略
- zombie处理
- Eclipse快捷键大全(转载)
- eclipse安装ADT问题
- hdu 5578 Friendship of Frog(multiset的应用)
- SQL Server 2005 自动化删除表分区设计方案
- cordova 安装插件合集
- 积木城堡
- 积跬步-至千里系列之一:Linux系统学习的一些初级命令
- Java对象表示方式1:序列化、反序列化和transient关键字的作用
- 汇编教程之动态链接库
- Python 多线程
- shell 学习记录
- 不用Unity库,自己实现.NET轻量级依赖注入