iOS开发之多线程基础

来源:互联网 发布:8选1数据选择器真值表 编辑:程序博客网 时间:2024/05/16 12:04

本文主要介绍和多线程相关的知识。首先了解以下概念

1、          进程:

(1)   进程是指在系统中正在运行的一个应用程序

(2)   每个进程之间是独立的(每个应用之间是独立的),每个进程均在其专用且受保护的内存空间内(可理解为沙盒)。比如手机内存同时运行QQ进程,音乐进程。(一边听歌一边聊QQ,互不干扰)

2、          线程:

(1)   一个进程要想执行任务,必须得有线程(每个进程至少要有一个线程)

(2)   线程是进程的基本执行单元,一个进程(程序)的所有任务都在线程中执行。

如下图,使用酷狗播放音乐、使用迅雷下载电影

3、          任务:

(1)   一个线程中任务的执行是串行的

(2)   如果一个线程中执行多个任务,那么只能一个一个地按顺序执行这些任务

(3)   即同一时间内,一个线程只能执行一个任务

因此,也可以认为线程是进程中执行任务的一条路径。

了解了以上概念,下面就认识跟多线程相关的概念。

1、          多线程:

(1)   一个进程中可以开启多条线程,每条线程可以并发(同时)执行不同的任务

比如,酷狗音乐一边听歌一边下载别的歌曲(一个酷狗进程开启了两条线程,一个听歌,一个下载歌曲)

2、          多线程原理:

(1)   同一时间,CPU只能处理一条线程,只有一条线程在工作(在执行任务)

(2)   多线程冰法(同时)执行,其实是CPU快速地在多条线程之间调度(切换)

(3)   如果CPU调度线程的速度足够快,就造成了多线程冰法执行的假象

那么如果线程非常非常多,会发生什么情况呢?

(1)   CPU在多条线程之间调度虽然很快,但线程非常多的时候CPU的调度效率会下降,且CPU会消耗大量的资源

(2)   每条线程被调度执行的频次会降低(线程的执行效率降低)

3、          多线程的优点:

(1)   能适当提高程序的执行效率

(2)   能适当提高资源利用率(CPU、内存利用率)

4、          多线程的缺点:

(1)   开启线程需要占用一定的内存空间(默认情况下,主线程电泳1M,子线程占用512K),如果开启大量的线程,会占用内存空间,降低程序性能

(2)   线程越多,CPU在调度线程上的开销就越大

(3)   长须设计更加复杂:比如线程之间的通信、多线程的数据共享

5、          主线程

(1)   一个iOS程序运行后,默认会开启一条线程,称之为“主线程”或“UI线程”

(2)   主线程的作用:a.显示\刷新UI界面;b.处理UI事件(如点击、拖拽等)

(3)   主线程使用注意点:不要将比较耗时的任务放到主线程中

6、          iOS中多线程的实现方案


技术

简介

语言

线程生命周期

使用频率

pthread

1.     一套通用多线程API

2.     适用于Unix\Linux\Windows等系统

3.     跨平台\可移植

4.     使用难度大(底层)

C

程序员管理

几乎不用

NSThread

1.     使用更加面向对象

2.     简单易用,可直接操作线程对象

OC

程序员管理

偶尔使用

GCD

1.     旨在代替NSThread等线程技术

2.     充分利用设备的多核

C

自动管理

经常使用

NSOperation

1.     基于GCD(底层是GCD)

2.     比GCD多了一些更简单实用的功能

3.     使用更加面向对象

OC

自动管理

经常使用















本文就介绍到这里,关于多线程的更多内容将在下面的文章介绍。

0 0
原创粉丝点击