一. 多线程的基本概念

一. 进程和线程

  1. 进程
    • 系统中正在运行的程序, 称之为一个进程
    • 每个进程, 都在自己独立的内存空间运行, 并且进程之间互不影响
  2. 线程
    • 进程的所有任务, 都是在线程执行的, 可以说他是进程的基本执行单元
    • 进程的串行
      • 单个进程中任务的执行, 是串行执行的, 每个任务按顺序执行
      • 单个线程, 同一时间内, 只能执行一个任务
  3. 进程和线程的比较
    • 进程
      • 进程是CPU分配资源和调度的单位
      • 同一个进程中的线程, 共享进程的资源
    • 线程
      • 线程是CPU调用(执行任务)的最小单位
      • 一个程序可以对应多个进程, 一个进程中可以有多个咸亨

二. 多线程

  1. 概念与原理

    • 一个进程可以有多个线程, 每个线程可以并行(同时)执行不同的任务(如一个下载软件, 可以使用三个线程, 同时下载不同的文件)
    • 原理
      • 统一时间, CPU只能调用一条线程, 也就是说同一时间只有一条线程能在工作
      • 并行, 其实就是CPU在以极快的速度, 在不同的线程之间调度执行, 造成了并行的假象(特指单核CPU)
      • 而如今的多核CPU, 每个核心可以同时处理不同的任务, 从而真正达到了多线程并发执行任务
  2. 多线程的优缺点

    • 优点:
      • 提高了程序运行的效率
      • 提高了资源利用率, 充分的使用了空闲的内存和CPU资源
    • 缺点
      • 每创建一条线程, 都会开辟内存空间, 并且消耗90毫秒的时间
      • 如果开启过多的线程, 势必会拖慢CPU的运行速度, 降低程序的性能, 让CPU开销过大
      • 多线程的程序, 往往设计上会较为复杂, 线程间的切换/主线程和子线程的协调, 都是开发中较难解决的问题

三. 多线程在iOS开发中的应用

  1. 主线程

    • 应用程序运行之后, 在UIApplication回自动开启一条主线程(UI线程)
    • 主线程的作用, 主要是用来显示/刷新UI界面, 处理UI事件
  2. 使用时的注意事项

    • 耗时操作(如加载时间过长的操作), 不要放在主线程挡住, 否则会影响主线程处理UI事件, 导致运行界面拖慢, 降低用户体验
    • 当耗时操作还没有结束的时候, UI界面无法响应用户的交互, 直至耗时操作结束后, 主线程才能继续处理UI事件
    • 因此: 耗时操作, 应该放在子线程中去执行(如后台线程, 非主线程)
  3. 判断当前线程是否为主线程

    • 使用[NSThread currentThread]来获取当前的线程, 如果打印的结果为number = 1, name = main, 则该线程就是主线程
    • 使用[NSThread isMainThread]该方法会返回一个BOOL值, 如果当前线程是主线程的话, 就会返回1, 否则返回0
    • 使用NSTherad创建的线程对象"thread", 调用[thread isMainThread], 就会判断当前的线程对象是否为主线程
  4. 多线程的实现方案

    4B1838CF-D9A2-44EC-9FE1-E11B2D9E7323.png

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,451评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,172评论 3 394
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,782评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,709评论 1 294
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,733评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,578评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,320评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,241评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,686评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,878评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,992评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,715评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,336评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,912评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,040评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,173评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,947评论 2 355

推荐阅读更多精彩内容

  • 一、进程和线程的基础知识 1、进程和线程的概念 进程:运行中的应用程序称为进程,拥有系统资源(cpu、内存) 线程...
    我是嘻哈大哥阅读 360评论 0 3
  • 线程概述 有些程序是一条直线,起点到终点;有些程序是一个圆,不断循环,直到将它切断一个运行着的程序就是一个进程或者...
    褪而未变阅读 299评论 0 0
  • iOS开发多线程总是绕不过的坎,看了很多前辈们优秀的文章,如:关于iOS多线程,我说,你听,没准你就懂了!、谈iO...
    Andy_Ron阅读 3,351评论 6 65
  • 一、多线程基础 基本概念 进程进程是指在系统中正在运行的一个应用程序每个进程之间是独立的,每个进程均运行在其专用且...
    AlanGe阅读 546评论 0 0
  • 1月5日 星期五 晴 因为昨天下了一场大雪,所以道路上都是积雪给大家带来很多的不便...
    徐鑫悦妈妈阅读 164评论 0 0