ios-GCD介绍

GCD全称为Grand Central Dispatch,是纯C语言的,提供了很多函数。

GCD的介绍

GCD是苹果公司为多核的并行运算提出的解决的方案

GCD会自动利用更多的CPU内核,比如双核,四核。

GCD会自动管理线程的生命周期(创建线程、调度任务、销毁线程)

GCD的所有的API都在libdispatch.dylib这个动态库中,XCode会自动的导入

GCD的主头文件是#import <dispatch/dispatch.h>

程序员要做的就是告诉GCD要执行什么任务,不需要编写任何线程管理的代码。

GCD有两个核心

一个是任务一个是队列。任务就是执行什么操作,队列就是用来存放任务的。

GCD使用的两个步骤

创建任务:确定要做的事情

将任务添加到队列中,GCD会自动将队列中的任务取出来,放到对应的线程中执行,任务的取出遵循队列的FIFO原则也就是先进先出,后进后出。

GCD异步下载网络图片,我们看不到线程也不会多去写函数了会很方便

#import "ViewController.h"

@interface ViewController ()
@property (nonatomic ,strong)UIScrollView * scrollView;
@property (nonatomic ,strong)UIImageView * imageView;
@end

@implementation ViewController
-(void)loadView
{
    self.scrollView=[[UIScrollView alloc]init];
    self.imageView=[[UIImageView alloc]init];
    self.view=self.scrollView;
    [self.scrollView addSubview:self.imageView];
}
- (void)viewDidLoad {
    [super viewDidLoad];
    //开启异步执行,下载网络图片
    dispatch_async(dispatch_get_global_queue(0, 0), ^{
        NSURL * url=[NSURL URLWithString:@"https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1502267808635&di=40
      d2848bd388e1551749d652ab3a1438&imgtype=0&src=http%3A%2F%2Fabc.2008php.com%2F2013_Website_appreciate%2F2013-07-22%2F201307221
       75804.jpg"];
        NSData * data=[NSData dataWithContentsOfURL:url];
        UIImage * image=[UIImage imageWithData:data];
        dispatch_async(dispatch_get_main_queue(), ^{
            self.imageView.image=image;
            //让imageview和图片一样大小
            [self.imageView sizeToFit];
            self.scrollView.contentSize=image.size;
            NSLog(@"%@",[NSThread currentThread]);
        });
    });
}

GCD中创建的线程执行完任务之后不会立刻销毁,而是会现放到线程池中呆较短的时间,如果还是没有任务,再去销毁。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值