美文网首页
多线程相关

多线程相关

作者: X勒个F | 来源:发表于2019-05-10 00:21 被阅读0次

1. GCD

1. 同步/异步 串行/并发
dispatch_sync(serial_queue, ^{//任务})

dispatch_async(serial_queue, ^{//任务})

dispatch_sync(concurrent_queue, ^{//任务})

dispatch_async(concurrent_queue, ^{//任务})
image
  • 死锁
    • 原因
      • 队列引起的循环等待
      • 主队列中所提交的任务无论是同步方式还是异步方式,都要在主线程中执行
      • 同步提交的任务,不论是提交到并发还是串行队列,都在当前线程执行


        image
image
image image
image
2. dispatch_barrier_async
  • 并发队列实现多读单写


    image
3. dispatch_group
// 创建一个group
    dispatch_group_t group = dispatch_group_create();
    
    // for循环遍历各个元素执行操作
    for (NSURL *url in arrayURLs) {
        
        // 异步组分派到并发队列当中
        dispatch_group_async(group, concurrent_queue, ^{
            
            //根据url去下载图片
            
            NSLog(@"url is %@", url);
        });
    }
    
    dispatch_group_notify(group, dispatch_get_main_queue(), ^{
        // 当添加到组中的所有任务执行完成之后会调用该Block
        NSLog(@"所有图片已全部下载完成");
    });

2. NSOperation

配合NSOperationQueue实现多线程方案
  • 特点
    • 可以添加任务依赖
    • 任务执行状态控制
      • 状态
        • isReady
        • isExecuting
        • isFinished
        • isCancelled
      • 如果只重写main方法,底层控制变更任务执行完成状态,以及任务退出
      • 如果重写了start方法,自行控制任务状态
    • 最大并发量
    • 支持KVO

3. NSThread

  • 启动流程


    image
  • 结合Runloop实现常驻线程
  • Start方法

4. 多线程与锁

  • iOS中的锁
    • @synchronized
      • 一般在创建单例对象的时候使用
    • atomic
      • 修饰属性的关键字
      • 对被修饰对象进行原子操作(不负责使用)


        image
    • OSSpinLock
      • 自旋锁
      • 循环等待询问,不释放当前资源
      • 用于轻量级数据访问,简单的int值+1/-1操作
    • NSLock


      image
    • NSRrecursiveLock - 递归锁 image
    • dispatch_semaphore_t - 信号量
      • dispatch_semaphore_create(1)
        • 内部实现


          image
      • dispatch_semaphore_wait(semaphore, DISPATCH_TIME_FOREVER)
        • 内部实现逻辑


          image
      • dispatch_semaphore_signal(semaphore)
        • 内部


          image

相关文章

  • 多线程相关

    引文: 多线程相关 OC 语言相关 内存管理相关 UI视图相关 RunLoop相关 GCD NSOperation...

  • 网络相关

    引文: 多线程相关 OC 语言相关 内存管理相关 UI视图相关 RunLoop相关 HTTP协议 HTTPS与网络...

  • iOS面试

    目录 UI视图相关 存储相关 OC 语言特性相关 Runtime相关 内存管理相关 Block相关 多线程相关 R...

  • iOS多线程之NSOperations

    相关文章:iOS多线程之NSThreadiOS多线程之GCD NSOperation(任务)与NSOperatio...

  • Android下多线程的实现

    Android下多线程相关 线程安全相关问题参考:java内存模型与线程 android下与多线程有关的主要有以下...

  • OC 语言相关

    引文: 多线程相关 OC 语言相关 内存管理相关 UI视图相关 RunLoop相关 分类 关联对象 扩展 代理 通...

  • 多线程相关

    1、Thread/runnable 1)继承Thread类 2)实现Runnable接口 2、两种启动线程方法的区...

  • 多线程相关

    1.GCD 同步/异步和串行/并发 dispatch_barrier_async dispatch_group (...

  • 多线程相关

  • 多线程相关

    1. 多线程使用的优缺点? 优点: (1)多线程技术使程序的响应速度更快 (2)当前没有进行处理的任务可以将处理器...

网友评论

      本文标题:多线程相关

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