iOS - 初识多线程

作者:Mitchell 

一 进程:

  • 指在系统中正在运行的一个应用程序
  • 每个进程之间是相互独立的

二 线程:

  • 1个进程要想执行任务,必须得有线程(每个进程至少要有1条线程)
  • 1个进程的所有任务都再线程中执行
  • 线程的内部是串行的

三 多线程:

  • 什么是多线程

    • 1个进程中可以开启多条线程,多条线程可以并行执行不同的任务。
    • 多线程可以提高程序执行的效率
    • cpu同时只能运行一条线程,只不过通过时间片轮转,也就是CPU快速在多个线程之间调度(切换),如果CPU调度线程的时间足够快,就造成了多线程并发执行的假象。
  • 多个线程的缺点:

  • 多线程的优点:

    • 能适当提高程序的执行效率
    • 能适当提高资源利用率(CPU,内存利用率)
  • 多线程的缺点

    • 创建线程是有开销的,iOS下主要成本包括:内核数据结构(大约1KB)、栈空间(子线程512KB、主线程1MB,也可以使用 -setStacjSize: 设置,但是必须是4K的倍数,而且最小是16K),创建线程大约需要90毫秒的创建时间
    • 如果开启大量的线程,会降低程序的性能
    • CPU会在N多线程之间调度,CPU会累死,消耗大量的CPU资源
    • 每条线程被调度执行的频次被降低(线程的执行效率下降)

四 主线程:

  • 什么是主线程
    • 一个 iOS 程序运行后,默认会开启1条线程,称为“主线程”“UI线程”
  • 主线程的主要作用
    • 显示/刷新UI界面(如果在子线程中处理会有bug)
    • 处理UI事件(点击、滚动、拖拽)
  • 主线程的使用注意
    • 不要将比较耗时的操作放到主线程中
  • 如何获取主线程

[NSThread mainThread];(number = 1,name = main)
- 
[NSThread currentThread];
``` (如果是在当前方法是被主线程执行的,那么拿到的就是主线程,否则是当前线程)
+ 如何判断当前是否是在主线程中执行的
    - 判断当前是否在主线程中执行的
 [NSThread isMainThread]
    
---
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Object C中创建线程的方法是什么?如果在主线程中执行代码,方法是什么?如果想延时执行代码、方法又是什么? 1...
    AlanGe阅读 1,777评论 0 17
  • 一、基本概念 线程是用来执行任务的,线程彻底执行完任务A才能执行任务B,为了同时执行两个任务,产生了多线程 1、进...
    空白Null阅读 712评论 0 3
  • 又来到了一个老生常谈的问题,应用层软件开发的程序员要不要了解和深入学习操作系统呢? 今天就这个问题开始,来谈谈操...
    tangsl阅读 4,163评论 0 23
  • 我一直是女汉子类型的,当然不是指身型,而是性格。因为家有三个弟弟,老爸公平对待,把我当男娃养,除了天生的女性特征,...
    小丫屠阅读 165评论 2 3
  • 村里有位神婆,掌管鬼神之事。 东北严寒之地,女人爱貂,但寻常人家无力负担,村长媳妇富态,白狐皮草加身,好不气派,爱...
    虎子和小花阅读 666评论 3 0