学习是由已知的知识模型推理未知的知识模型的的过程。

本文适合学习完objective-c基础,想进一步提高做iOS开发的同学阅读。

在说线程的时候,我们先看看进程。

1.进程

每一个运行在系统中的应用程序,都有一个进程。进程是独立的,有着自己专属运行空间。进程的出现是为了解决多任务处理系统的问题。
首先看看单任务处理系统的示意图:

CPU按顺序执行任务1,任务2,任务3.... 前面的任务没有执行完,后面的任务是没法执行的。任务4哪怕再紧急,用的时间再短,也要等前面费时的任务3执行完才能轮到它。想象一下,你在听音乐的时候,想看视频,那就先把音乐听完才能去看,如果这样我估计你会疯掉吧。不过计算机刚刚出现的时候,系统就是单任务的。

任务1,任务2.....这里所说的任务 也就是运行在iOS系统中的app

幸好,多任务处理系统来了。


时间片(每个进程被分配一时间段,称为时间片,即进程允许执行的时间)。
注意:因为时间片的时间很短,CPU执行的速度非常快,每个任务几乎都能得到响应并执行。造成这些任务同时运行的假象。实际上在单个时间片内,只有一个任务在执行。

这里我们可以看出,进程是伴随多任务处理系统出现的一个产物。满足了我们阅读的同时,又想听音乐的愿望。

2.线程

每个app对应一个进程,系统协调进程之间的关系。但是在app内部,也有很多的不同的操作,有些操作是紧急的,有些操作是耗时的。
那么如何合理的安排这些操作呢?线程应运而生。原理与以上进程的协调是相似的。
所以有时候称线程为轻量级进程。

  • 线程是进程中一个独立的执行路径(控制单元)
  • 一个进程中至少包含一条线程,即主线程
  • 我们可以把耗时的操作放在别的线程中执行
  • UI相关的操作都在主线程中,所以要在主线程中更新UI

以淘宝为例,页面上有很多的图片,如果在主线程中下载图片,那么页面就会非常的卡。所以会把下载图片和耗时的操作放在别的线程。

3.使用多线程的优缺点

优点:

  • 充分发挥多核处理器优势,将不同线程任务分配给不同的处理器,真正进入“并行运算”状态
  • 将耗时的任务分配到其他线程执行,由主线程负责统一更新界面会使应用程序更加流畅,用户体验更好
  • 当硬件处理器的数量增加,程序会运行更快,而程序无需做任何调整

缺点:

  • 新建线程会占用更多的内存和cpu,线程太多会降低系统的总体性能

误区:

  • 多线程技术只是并发的执行任务,让优先级更多,更紧急的操作得到响应,并不会提高单个算法的执行效率。

iOS开发进阶--1.多线程简介的更多相关文章

  1. iOS开发进阶-实现多线程的3种方法

    相关文章链接: 1.多线程简介 2.实现多线程的3种方法 ......待续 前言 在多线程简介中,我已经说明过了,为了提高界面的流畅度以及用户体验.我们务必要把耗时的操作放到别的线程中去执行,千万不要 ...

  2. iOS开发进阶

    <iOS开发进阶>基本信息作者: 唐巧 出版社:电子工业出版社ISBN:9787121247453上架时间:2014-12-26出版日期:2015 年1月开本:16开页码:268版次:1- ...

  3. iOS开发UI篇—CALayer简介

    iOS开发UI篇—CALayer简介   一.简单介绍 在iOS中,你能看得见摸得着的东西基本上都是UIView,比如一个按钮.一个文本标签.一个文本输入框.一个图标等等,这些都是UIView. 其实 ...

  4. iOS开发网络篇—多线程断点下载

    iOS开发网络篇—多线程断点下载 说明:本文介绍多线程断点下载.项目中使用了苹果自带的类,实现了同时开启多条线程下载一个较大的文件.因为实现过程较为复杂,所以下面贴出完整的代码. 实现思路:下载开始, ...

  5. iOS开发进阶(唐巧)读书笔记(一)

    如何提高iOS开发技能 1.阅读博客:https://github.com/tangqiaoboy/iOSBlogCN 40多位iOS开发博主的博客地址 2.读书:每年阅读一本高质量的iOS开发书籍 ...

  6. 《iOS开发进阶》书籍目录

    第一部分:iOS开发工具 第二部分:iOS开发实践 第10章 理解内存管理 10.1 引用计数 10.1.1 什么是引用计数,原理是什么 10.1.2 我们为什么需要引用计数 10.1.3 不要向已经 ...

  7. iOS开发进阶之 UIWebView

    刚接触IOS开发1年多,现在对于混合式移动端开发越来越流行,因为开发成本上.速度上都比传统的APP开发要好,混合式开发是传统模式与PC网页端相结合的模式.那么提到了 APP的混合模式开发,在Andro ...

  8. 【原】iOS开发进阶(唐巧)读书笔记(二)

    第三部分:iOS开发底层原理 1.Objective-C对象模型 1.1 isa指针 NSObject.h部分代码: NS_ROOT_CLASS @interface NSObject <NSO ...

  9. ios开发:GCD多线程

    ios有三种多线程编程技术,分别是NSThread,Cocoa NSOperation和GCD,GCD全称Grand Central Dispatch 是Apple开发的一个多核编程的解决方法,在iO ...

随机推荐

  1. cocos2d-x 遇到的错误与解决方法。make: *** No rule to make target `/cygdrive/d/android/cocos2d-x-master/T12/proj.android/../../cocos2dx/xxxxx.cpp'

    cocos2d-x 遇到的错误与解决方法.make: *** No rule to make target `/cygdrive/d/android/cocos2d-x-master/T12/proj ...

  2. 外部exe窗体嵌入winform

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Drawing; u ...

  3. 国外成熟的程序交易系统的思路 z

    波涛(1998)在<系统交易方法>中提出,一个设计良好的交易系统,必须对投资决策的各个相关环节做出相应明确的规定,同时还必须符合使用者的心理特征.投资对象的统计特征以及投资资金的风险特征. ...

  4. 将批量下载的博客导入到手机后,通过豆约翰博客阅读器APP(Android手机)进行浏览,白字黑底,保护眼睛,图文并茂。

    首先下面演示的博文来自于以下地址:http://www.douban.com/note/423939291/ 需要先通过博客备份专家将导出的博文导入到手机(还不会用的朋友请先阅读http://www. ...

  5. 排序算法_HeapSort

    大根堆排序的基本思想: 1) 先将初始文件R[1..n]建成一个大根堆,此堆为初始的无序区; 2) 再将关键字最大的记录R[1](即堆顶)和无序区的最后一个记录R[n]交换,    由此得到新的无序区 ...

  6. 哈希(2) hash索引

    首先复习:       索引:快速查找的数据结构 1.可以读以下mysql中索引的使用方法,图文并茂.很好理解. http://www.it165.net/database/html/201310/4 ...

  7. JavaScript高级程序设计48.pdf

    设备中的键盘事件 任天堂Wii等设备可以通过键码知道用户按下了哪个键 复合事件 复合事件是DOM3级事件新添加的一类事件,用于处理IME的输入序列.IME(Input Method Editor,输入 ...

  8. HW4.24

    public class Solution { public static void main(String[] args) { double sum = 0; for(int i = 1; i &l ...

  9. [Ruby on Rails Issue] When Setting Sqlite version on the Gemfile, Show error "An error occurred while installing sqlite3 ",

    Issue: Gem files will remain installed in /tmp/bundler20140825-31835-p0c0p/sqlite3-1.3.9/gems/sqlite ...

  10. Microsoft Dynamics CRM 2011 相关-摘自网络

    Microsoft Dynamics CRM Server 2011硬件需求: 组件 *最低要求 *推荐配置 处理器 x64 体系结构或兼容的双核 1.5 GHz 处理器 四核 x64 体系结构 2 ...