美文网首页
一 GCD初识

一 GCD初识

作者: 贺赟生 | 来源:发表于2020-03-16 12:11 被阅读0次

1.GCD基础概念
(此笔记为学习Objective-C高级编程书中第三章所记录的相关知识点)

gcd为异步执行任务的技术之一,只要用合适的queue就可以生成线程去执行任务。例如''


 [dispatch_async(queue, ^{

        //异步执行的代码

        [dispatch_async(dispatch_get_main_queue(), ^{

            //回到主线程执行代码

        })];

    })];

当然在导入GCD之前 NSObject类中也提供类似的示例方法 来实现简单的多线程开发 例如


- (void)viewDidLoad {

    [super viewDidLoad];

    [self performSelectorInBackground:@selector(doSometing) withObject:nil];

}

//开启后台执行的方法

-(void)doSometing{

    //处理耗时操作 如下载图片 访问数据库等操作

    //.....

    //处理完成之后同步主线程

    [self performSelectorOnMainThread:@selector(finishWork) withObject:nil waitUntilDone:NO];

}

//主线程处理的方法

-(void)finishWork{

    //回到主线程 处理 如操作UI

}

NSObject提供的多线程方法虽然比GCD看起来简单 但是简便性上却差了很多 ,所以使用GCD来开发多线程还是可以提高执行效率

2.多线程编程
CPU技术有很多 但是基本是一个CPU核能够执行的的CPU命令始终为1 ,但是现在由于硬件都提供了多核,那这样就可以由多个CPU并行执行多个线程,这样的技术为多线程编程。

但是,多线程编程也容易引发各种问题。例如 多个线程竞争相同的资源可能导致数据的不一致、停止等待的线程会导致多个线程持续等待而造成死锁、若使用太多的线程又会消耗大量的内存。但是即便如此使用多线程编程可以保证应用程序的响应性能。

在应用程序启动时,最先执行的线程就是主线程,主要用来绘界面,处理屏幕事件等操作。若将耗时操作放入主线程则会影响RunLoop主循环的执行所以导致界面停滞。故耗时操作应放入其他线程去执行。

相关文章

  • 一 GCD初识

    1.GCD基础概念(此笔记为学习Objective-C高级编程书中第三章所记录的相关知识点) gcd为异步执行任务...

  • GCD初识

    什么是GCDGCD是牛逼的中枢调度器。它是纯C语言,提供了很多非常强大的函数 GCD的优势它是苹果公司为多核的并行...

  • GCD初相识

    GCD初识一 谈到iOS多线程,一般都会谈到四种方式:pthread、NSThread、GCD和NSOperati...

  • iOS GCD初识.md

    串行队列 串行队列:操作是按顺序执行的,并且都在同一个线程上输出 一个串行队列对应只有一个线程,因此同时只能执行一...

  • GCD技术

    初识GCD 在我们平时的OC开发中经常需要用到多线程编程,而GCD这项技术是最受开发者喜爱的多线程技术,我们今天就...

  • 技术贴:2.初识GCD

    GCD全程Grand Central Dispatch 摒弃掉了线程中复杂的创建线程和开启线程的繁琐。只需要关注最...

  • GCD 中的同步、异步、串行、并行还傻傻分不清楚?

    刚接触 GCD 时,初识同步派发、异步派发、串行队列、并行队列,我们一定有些懵圈,这都是啥跟啥?没关系,现在让我们...

  • iOS开发GCD

    有关任务和队列的概念在此就不多说了,我的简书有详细记载,上一篇是基础,这一篇是针对-----GCD。 一、初识GC...

  • 多线程之GCD

    GCD介绍 1、GCD简介 2、GCD任务和队列 3、GCD 的基本使用 4、GCD 线程间的通信 5、GCD 的...

  • iOS 多线程--GCD

    一、GCD基本介绍 1.GCD简介 GCD是Grand Central Dispatch的缩写,GCD是苹果推出的...

网友评论

      本文标题:一 GCD初识

      本文链接:https://www.haomeiwen.com/subject/auqgehtx.html