美文网首页iOS之道
多线程(一)

多线程(一)

作者: 没戏还在演戏 | 来源:发表于2019-12-24 15:10 被阅读0次

1.进程

  • 一个APP应用就是一个进程
  • iOS是单进程,安卓可以多进程
  • 一个进程内可以有多个线程

2.多线程

优点:

  • 能适当提高程序的执行效率
  • 能适当提高资源利用率(CPU,内存)
  • 线程上的任务执行完成后,线程会自动销毁

缺点:

  • 开启线程需要占用一定的内存空间(默认情况下,每一个线程都占512KB)
  • 如果开启大量的线程,会占用大量的内存空间,降低程序的性能
  • 线程越多,CPU在调用线程上的开销就越大
  • 程序设计更加复杂,比如线程间的通信、多线程的数据共享

3.线程的生命周期

线程的生命周期.png
就绪 -> 运行
运行 -> 就绪
线程之间的切换
多核就是并发
线程不能start 两次

4. 锁

锁性能图.png
推荐使用NSLock
偷懒用@synchronized 美滋滋
  • 自旋锁
    一个完成 下一个直接进去
  • 互斥锁
    如果发现前面有线程在执行,就休眠

5.栅栏函数

他能够保证顺序执行,并保证线程安全
注意点:

  1. 栅栏函数一定要是自定义的并发队列,不能使用dispatch_get_global_queue(全局并发队列)
  2. 必须要求都在一个自定义队列里
  3. 不利于封装

dispatch_async(dispatch_get_global_queue(0, 0), ^{
        //AFN自有队列 -- @"com.almofire.cn.session"
        [self.manager request1];
    });
 //AFN内有自己的队列 所以这里栅栏函数无效
dispatch_barrier_async(dispatch_get_global_queue(0, 0), ^{

});
dispatch_async(dispatch_get_global_queue(0, 0), ^{
     [self.manager request2];
});

6.队列图

队列图.png

相关文章

  • 多线程介绍

    一、进程与线程 进程介绍 线程介绍 线程的串行 二、多线程 多线程介绍 多线程原理 多线程的优缺点 多线程优点: ...

  • 多线程编程

    多线程编程之Linux环境下的多线程(一)多线程编程之Linux环境下的多线程(二)多线程编程之Linux环境下的...

  • 多线程

    创建一个多线程 创建多线程-继承线程类 创建多线程-实现Runnable接口 创建多线程-匿名类code

  • 带你搞懂Java多线程(五)

    带你搞懂Java多线程(一)带你搞懂Java多线程(二)带你搞懂Java多线程(三)带你搞懂Java多线程(四) ...

  • iOS多线程 NSOperation

    系列文章: 多线程 多线程 pthread、NSThread 多线程 GCD 多线程 NSOperation 多线...

  • iOS多线程 pthread、NSThread

    系列文章: 多线程 多线程 pthread、NSThread 多线程 GCD 多线程 NSOperation 多线...

  • iOS多线程: GCD

    系列文章: 多线程 多线程 pthread、NSThread 多线程 GCD 多线程 NSOperation 多线...

  • iOS多线程运用

    系列文章: 多线程 多线程 pthread、NSThread 多线程 GCD 多线程 NSOperation 多线...

  • iOS多线程基础

    系列文章: 多线程 多线程 pthread、NSThread 多线程 GCD 多线程 NSOperation 多线...

  • iOS 多线程简介

    一.本文介绍点 1.为什么要学习多线程2.什么是多线程3.多线程的原理4.多线程的优缺点5.多线程的应用6.多线程...

网友评论

    本文标题:多线程(一)

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