线程和多线程(二)

概述ios

多线程的概念在各个操做系统上都会接触到,windows、Linux、mac os等等这些经常使用的操做系统,都支持多线程的概念。程序员

固然ios中也不例外,可是线程的运行节点多是咱们日常不太注意的。编程

以前简单介绍了下单线程和多线程,下面再对单线程和多线程作下补充。windows

 

1、程序、进程、线程的区别安全

 

 

2、单线程多线程

 

 

3、多线程并发

 

4、单线程和多线程的区别负载均衡

 

 

5、多线程的做用工具

一、多线程的做用post

相信有过开发经验的程序员都知道,当咱们把代码写完后,程序是一行一行逐行执行代码的,当其中一行代码须要执行较长时间(例如select一个教复杂的语句或者较多的数据时),那么程序就会出现卡顿的现象,不会响应用户的操做。

由于开启程序后会默认开启一个主线程,即UI线程。当处于刚才那种状况时,好比一个windows程序,就会出现程序暂时无响应的提示,好像电脑卡主的感受,这是很是很差的一种用户体验。

当咱们要避免这种状况的时候,最好的方式就是多线程,开启一个新的线程,用来执行一个耗时的操做,执行完成后再让主线程来修改UI页面(若是须要的话)。

既多线程能够解决负载均衡问题,充分利用CPU资源,为了提升可CPU的使用率。在多线程程序中,一个线程必须等待的时候,CPU能够运行其它的线程而不是等待,这样就大大提升了程序的效率。

 

2.多线程的原理

 

同一时间,CPU只能处理1条线程,只有1条线程在工做(执行)
多线程并发(同时)执行,实际上是CPU快速地在多条线程之间调度(切换)
若是CPU调度线程的时间足够快,就形成了多线程并发执行的假象
思考:若是线程很是很是多,会发生什么状况?
CPU会在N多线程之间调度,CPU会累死,消耗大量的CPU资源
每条线程被调度执行的频次会下降(线程的执行效率下降)

 

3.多线程的优缺点

 

多线程的优势

能适当提升程序的执行效率

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

 

多线程的缺点

开启线程须要占用必定的内存空间(默认状况下,主线程占用1M,子线程占用512KB),若是开启大量的线程,会占用大量的内存空间,下降程序的性能

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

程序设计更加复杂:好比线程之间的通讯、多线程的数据共享

 

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

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

主线程的主要做用

显示\刷新UI界面

处理UI事件(好比点击事件、滚动事件、拖拽事件等)

 

主线程的使用注意:别将比较耗时的操做放到主线程中。

耗时操做会卡住主线程,严重影响UI的流畅度,给用户一种“卡”的坏体验 

 

 

五、用到多线程的地方

在不少时候咱们呢可能没有用到多线程,或者不清楚何时用多线程,那么在什么地方会用到多线程呢?

大多状况下,要用到多线程的主要是须要处理大量的IO操做时或处理的状况须要花大量的时间等等,好比:读写文 件、视频图像的采集、处理、显示、保存等。 

 

六、iOS有三种主要的实现多线程的方法

一、NSThread。二、NSOperation。三、GCD。 

 

七、多线程安全的解决方案

使用锁:锁是线程编程同步工具的基础。锁可让你很容易保护代码中一大块区域以便你能够确保代码的正 确性。

一、使用POSIX互斥锁;

二、使用NSLock类;

三、使用@synchronized指令等。 

 

互斥锁的优缺点

优势:能有效防止因多线程抢夺资源形成的数据安全问题

缺点:须要消耗大量的CPU资源

 

互斥锁的使用前提:多条线程抢夺同一块资源 

相关专业术语:线程同步,多条线程按顺序地执行任务

互斥锁,就是使用了线程同步技术

 

 

一、建立NSThread的两种方式

相关文章
相关标签/搜索