GCD的基础

 #pragma mark - 使用GCD 创建一个 串行 队列
// 第一种:系统提供的创建串行队列的方法
// 在真正的开发中如果需要创建串行队列,比较习惯用这种
// dispatch_queue_t queue = dispatch_get_main_queue(); #pragma mark - 使用GCD去创建 并行 队列
// 第一种:系统的
// 参数1:表示优先级(有四个,没有明显区别)
// 参数2:系统保留字
// dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0); #pragma mark - 使用GCD并行队列 创建子线程
// 参数1:队列名
// 参数2:block// dispatch_async(queue, ^{
// NSLog(@"main1 = %@", [NSThread mainThread]);
// NSLog(@"current1 = %@", [NSThread currentThread]);
// });
// dispatch_async(queue, ^{
// NSLog(@"main2 = %@", [NSThread mainThread]);
// NSLog(@"current2 = %@", [NSThread currentThread]);
// });
// dispatch_async(queue, ^{
// NSLog(@"main3 = %@", [NSThread mainThread]);
// NSLog(@"current3 = %@", [NSThread currentThread]);
// });
// 。。。。创建N个 #pragma mark - 几秒之后去做每一件事
// dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(3.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
// NSLog(@"3.0秒的时候");
// }); #pragma mark - 重复像一个队列中添加多个任务
// dispatch_queue_t queue = dispatch_queue_create(0, DISPATCH_QUEUE_CONCURRENT);
// 第一个参数:添加的数量
// 第二个参数:队列
// 第三个参数:block
// dispatch_apply(100, queue, ^(size_t index) {
// NSLog(@"%ld", index);
// }); #pragma mark - 分组
// // 创建一个分组
// dispatch_group_t group = dispatch_group_create();
// // 创建一个队列
// dispatch_queue_t queue = dispatch_queue_create(0, DISPATCH_QUEUE_CONCURRENT);
// // 创建任务1:
// dispatch_group_async(group, queue, ^{
// NSLog(@"i am 1");
// });
// // 创建任务2:
// dispatch_group_async(group, queue, ^{
// NSLog(@"i am 2");
// });
// 。。。。创建N个 // // 用于监听素有的任务执行的情况的 {所以此功能代码必须放在所有任务之后}
// dispatch_group_notify(group, queue, ^{
// NSLog(@"i am notify");
// }); #pragma mark - 并发中的串行 (披着羊皮的狼)
// // 创建的队列串行
// // DISPATCH_QUEUE_SERIAL 顺序执行
// // DISPATCH_QUEUE_CONCURRENT 无序执行
// dispatch_queue_t queue = dispatch_queue_create(0, DISPATCH_QUEUE_CONCURRENT);
// dispatch_async(queue, ^{
// NSLog(@"test 1");
// });
// dispatch_async(queue, ^{
// NSLog(@"test 2");
// });
// 。。。。创建N个

代码展示:

 #import "ViewController.h"

 @interface ViewController ()
/// 创建一个imageView
@property (nonatomic,strong) UIImageView *imgView;
/// 创建一个data用于接收数据
@property (nonatomic,strong) NSData *imageData; @end @implementation ViewController - (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
// 把imageView添加到视图上
self.imgView = [[UIImageView alloc] initWithFrame:[UIScreen mainScreen].bounds];
self.imgView.backgroundColor = [UIColor cyanColor];
[self.view addSubview:self.imgView]; [self dataHandle];
}
#pragma mark - 解析数据
- (void)dataHandle {
__weak typeof(self) weakSelf = self;
// 创建子线程 在子线程中请求数据
dispatch_async(dispatch_queue_create(, DISPATCH_QUEUE_CONCURRENT), ^{
NSURL *url = [NSURL URLWithString:@"http://pic.58pic.com/58pic/13/11/15/83b58PICXf4_1024.jpg"];
// 接收数据
weakSelf.imageData = [NSData dataWithContentsOfURL:url];
// 返回主线程 刷新UI
dispatch_async(dispatch_get_main_queue(), ^{
// 传值
weakSelf.imgView.image = [UIImage imageWithData:self.imageData];
});
}); } @end

复习知识点:GCD多线程的更多相关文章

  1. Java核心知识点学习----多线程中的阻塞队列,ArrayBlockingQueue介绍

    1.什么是阻塞队列? 所谓队列,遵循的是先进先出原则(FIFO),阻塞队列,即是数据共享时,A在写数据时,B想读同一数据,那么就将发生阻塞了. 看一下线程的四种状态,首先是新创建一个线程,然后,通过s ...

  2. iOS开发——GCD多线程详解

    GCD多线程详解 1. 什么是GCD Grand Central Dispatch 简称(GCD)是苹果公司开发的技术,简单来说,GCD就是iOS一套解决多线程的机制,使用GCD能够最大限度简化多线程 ...

  3. GCD多线程的一个全面的题目

    GCD多线程的一个全面的题目  

  4. [Xcode 实际操作]八、网络与多线程-(22)使用GCD多线程技术异步下载图片

    目录:[Swift]Xcode实际操作 本文将演示如何使用使用GCD多线程技术异步下载图片. Grand Central Dispatch(GCD) 是 Apple 开发的一个多核编程的较新的解决方法 ...

  5. JavaEE期末复习知识点总结

    JavaEE期末复习知识点总结 Java企业应用开发环境 Maven的基础概念 Maven是一个项目管理工具,可以对 Java 项目进行构建.依赖管理 Maven仓库 Maven 仓库是项目中依赖的第 ...

  6. Object-C关于GCD多线程的使用

    ```objc1 使用Crearte函数创建的并发队列和全局并发队列的主要区别: 1)全局并发队列在整个应用程序中本身是默认存在的并且对应有高优先级.默认优先级.低优先级和后台优先级一共四个并发队列, ...

  7. iOS开发——多线程篇——NSOperation(基于GCD多线程编程),下载图片并合成新图片

    一.NSOperation的基本概念1.简介NSOperation的作用配合使用NSOperation和NSOperationQueue也能实现多线程编程 NSOperation和NSOperatio ...

  8. GCD 多线程 初探

    GCD编程的核心就是dispatch队列,dispatch block的执行最终都会放进某个队列中去进行,它类似NSOperationQueue但更复杂也更强大,并且可以嵌套使用.所以说,结合bloc ...

  9. ios 使用GCD 多线程 教程

    什么是GCD Grand Central Dispatch (GCD)是Apple开发的一个多核编程的解决方法.该方法在Mac OS X 10.6雪豹中首次推出,并随后被引入到了iOS4.0中.GCD ...

随机推荐

  1. Node.js笔记1

    Node.js入门笔记 1. node -help 可以显示帮助信息2. node REPL 模式(Read-eval-print loop) 输入—求值—输出循环 直接在cmd输入node 可以进入 ...

  2. USB数据流模型

    USB数据流模型 <<USB Specification11>> << USB Specification20>> << Linux Dev ...

  3. 如何将 MFC ActiveX 控件标记为安全,脚本和初始化

    MSDN原文.ActiveX控件标记安全(可以不仅仅是MFC ActiveX) 概要 默认情况下,MFC ActiveX 控件未标记为对脚本编写是安全的和对初始化是安全的.控制运行在 Internet ...

  4. BZOJ 1996: [Hnoi2010]chorus 合唱队(dp)

    简单的dp题..不能更水了.. --------------------------------------------------------------- #include<cstdio&g ...

  5. 09-C语言数组

    目录: 一.使用xcode编辑工具 二.数组 三.数组遍历 四.多维数组 回到顶部 一.使用xcode编辑工具 1 打开xcode程序 2 创建一个项目 OSX -> Application - ...

  6. iOS开发项目名称修改

    前言:在IOS开发中,有时候想改一下项目的名字,都会遇到很多麻烦.直接改项目名吧,XCODE又不会帮你改所有的名字.总是有很多文件.文件夹或者是项目设置的项.而且都是不能随便改的,有时候改着改着,编译 ...

  7. VC使用CRT调试功能来检测内存泄漏

    信息来源:csdn     C/C++ 编程语言的最强大功能之一便是其动态分配和释放内存,但是中国有句古话:“最大的长处也可能成为最大的弱点”,那么 C/C++ 应用程序正好印证了这句话.在 C/C+ ...

  8. HDU 2962 Trucking

    题目大意:给定无向图,每一条路上都有限重,求能到达目的地的最大限重,同时算出其最短路. 题解:由于有限重,所以二分检索,将二分的值代入最短路中,不断保存和更新即可. #include <cstd ...

  9. Uber选拔专车司机:五年以上驾驶经验 两小时视频培训

    摘要:说起当时下流行打车软件Uber的司机,还得从春节前在上海一次打车说起.那几天,记者在上海某商场逛到打烊时间,大包小包拎着袋子根本腾不出手拦出租车,而商场门口的出租车临时停靠点更是挤满“血拼”而归 ...

  10. android 关于LCD背光调节渐变过程引起背光闪烁问题

    如果背光渐变过程会引起背光闪烁,可以采取以下任意一种方法修改:   方法1.减少调节级别时间 http://blog.csdn.net/sergeycao   默认的设计在关闭背光时会有灭屏动画,就是 ...