3.GCD

作者: LucXion | 来源:发表于2021-11-29 13:40 被阅读0次

异步执行任务技术(保证应用程序的响应性能),一般将应用程序中记述的线程管理用的代码在系统级中实现。开发者只需要定义想执行的任务并追加到适当的Dispatch Queue中,GCD就能生成必要的线程并计划执行任务。

1个CPU执行的CPU命令列为一条无分叉路径,即为“线程”,即便一个CPU核虚拟为两个CPU核工作,也仍然符合一条无分叉路径的特征。

多线程的问题:数据竞争、死锁、太多线程导致消耗大量内存

dispatch_group

    dispatch_queue_t queue = dispatch_queue_create("并发1", DISPATCH_QUEUE_CONCURRENT);
    dispatch_queue_t queue2 = dispatch_queue_create("并发2", DISPATCH_QUEUE_CONCURRENT);
    dispatch_queue_t queue3 = dispatch_queue_create("并发2", DISPATCH_QUEUE_CONCURRENT);
    dispatch_group_t group = dispatch_group_create();
    dispatch_group_async(group, queue, ^{
        sleep(2);
        NSLog(@"2");
    });
    dispatch_group_async(group, queue2, ^{
        sleep(3);
        NSLog(@"3");
    });
    dispatch_group_async(group, queue3, ^{
        sleep(1);
        NSLog(@"1");
    });
    dispatch_group_notify(group, dispatch_get_main_queue(), ^{
        NSLog(@"返回主线程 %@",[NSThread currentThread]);
    });
    
    dispatch_time_t time = dispatch_time(DISPATCH_TIME_NOW, 2 * NSEC_PER_SEC);
    // dispatch_group_wait 会阻塞当前线程
    long result = dispatch_group_wait(group, time);
    if(result == 0){
        NSLog(@"group整个执行结束");
    }else {
        // group 无法中途取消
        NSLog(@"group没有执行完成 - %ld",result);
    }
    NSLog(@"end");

Dispatch Source

相关文章

  • 3.GCD

    异步执行任务技术(保证应用程序的响应性能),一般将应用程序中记述的线程管理用的代码在系统级中实现。开发者只需要定义...

  • 3.GCD二

    本篇是关于GCD的一些函数的 1.dispatch_after 准确含义是在指定时间后,将任务追加到队列中。 di...

  • iOS -- 多线程开发

    多线程开发 1.NSThread 2.NSOperation 3.GCD NSThread NSThread总结:...

  • iOS面试分享

    OC基础 1.kvo、kvc原理2.runtime、runloop 应用场景3.GCD NSOperation N...

  • iOS主要知识总结(网络多线程基础1NSThread)

    iOS中实现多线程的几种方案 1.pThread 2.NSThread 3.GCD 4.NSOperation p...

  • 多线程Note

    iOS里多线程有四种解决方案 1.Pthreads 2.NSThread 3.GCD 4.NSOperation ...

  • GCD

    3.GCD GCD的全称是Grand Central Dispatch,提供了非常多的纯C语言的函数 GCD的优势...

  • 关于多线程笔记

    1.GCD线程延迟 2.GCD后台执行 3.GCD主线程执行 4.GCD一次性执行

  • iOS中的多线程的基本知识

    iOS多线程有3种: 1.NSThread 2.NSOperation 3.GCD 线程:就是执行某个任务的一段代...

  • 定时器的实现和使用注意点

    说起定时器应该都不陌生,具体的实现方式有3种: 1.NSTimer 2.CADisplayLink 3.GCD 1...

网友评论

      本文标题:3.GCD

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