多线程详解

2019-11-30  本文已影响0人  kakao6

1.什么是多线程 

2. 多想程的优缺点

优点:1.使用线程可以把占据时间长的程序任务放在后台执行(比如常驻线程,就会放在后台) 2.用户点击界面可以更加吸引人,例如网络请求中进度条的设计 (AFNetWorking自带的菊花轮)3.能提升运行效率 (多线程的处理速度更快,就像上图所展示的那样,执行的通道更多) 4.在一些等待任务中,比如用户输入,文件读写,网络收发数据,线程就能发挥作用了。(FMDB的数据读写就是在多线程的基础上实现的)

如何实现一个常驻线程:https://www.jianshu.com/p/d49c75755b9c

缺点:1.大量的线程会影响性能,因为操作系统会在线程中来回切换  2.更多的线程需要更多的内存空间  3.线程的中止需要考虑对其程序的影响 (缺点这部分可能需要一些基本的概念了,先不用着急,接着看)

2.1基本概念

线程

线程 :引自维基百科线程(英语:thread)是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。 一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。在Unix System V及SunOS中也被称为轻量进程(lightweight processes),但轻量进程更多指内核线程(kernel thread),而把用户线程(user thread)称为线程。

讲线程就不能不提任务,任务是什么的,通俗的说任务就是就一件事情或一段代码,线程其实就是去执行这件事情。

线程(thread),指的是一个独立的代码执行路径,也就是说线程是代码执行路径的最小分支。在 iOS 中,线程的底层实现是基于 POSIX threads API 的,也就是我们常说的 pthreads ;

操作系统:

操作系统是管理计算机硬件与软件资源的计算机程序,同时也是计算机系统的内核与基石。操作系统需要处理如管理与配置内存、决定系统资源供需的优先次序、控制输入设备与输出设备、操作网络与管理文件系统等基本事务。操作系统也提供一个让用户与系统交互的操作界面。

2.2 线程在操作系统上如何工作的

线程和进程的调度:https://www.jianshu.com/p/32f64f1b32b7

时间片每个进程都有私有的虚拟地址空间,进程的所有线程共享同一地址空间。每个线程被CPU分配一个时间片,一旦被激活,它正常运行直到时间片耗尽并被挂起,此时,操作系统选择另一个线程进行运行。通过时间片轮转,又出于各个时间片很小(20毫秒级),看起来就像多个线程同时在工作。实际上,只有在多处理器系统上才是真正的在可得到的处理器上同时运行多个线程。

这些说明,线程在操作系统上是通过时间片来开始工作的,多线程意味着多个时间片,所以会影响性能 

线程的存储:进程有独立的存储空间,线程没有独立的存储空间,线程是进程的不同执行路径,一个线程崩溃,意味着该进程崩溃(解释了缺点中的第二点和第三点)

上一篇 下一篇

猜你喜欢

热点阅读