多线程和单线程的区别和联系

现在单线程与多线程已经得到普遍运用,那么究竟多线程好仍是单线程好呢?单线程和多线程的区别又是什么呢?下面咱们来看看它们的区别以及优缺点剖析。

一、单线程

每个正在运转的程序(即进程),至少包含一个线程,这个线程叫主线程

主线程在程序启动时被创立,用于履行main函数

只要一个主线程的程序,称作单线程程序

主线程担任履行程序的所有代码(UI展示以及刷新,网络请求,本地存储等等)。这些代码只能次序履行,无法并发履行

二、多线程

具有多个线程的程序,称作多线程程序。

iOS答应用户自己拓荒新的线程,相对于主线程来讲,这些线程,称为子线程

能够根据需求拓荒若干子线程

子线程和主线程都是独立的运转单元,各自的履行互不影响,因而能够并发履行

三、单线程与多线程的区别

单线程程序:只要一个线程,代码次序履行,容易出现代码堵塞(页面假死)

多线程程序:有多个线程,线程间独立运转,能有效地防止代码堵塞,并且进步程序的运转功能

留意:iOS中关于UI的添加和刷新必须在主线程中操作
图片[1]-多线程和单线程的区别和联系-小白之家

四、单线程与多线程的优缺点剖析

多线程优缺点:

同步应用程序的开发比较容易,但由于需求在上一个使命完成后才干开端新的使命,所以其效率通常比多线程应用程序低。假如完成同步使命所用的时刻比预计时间长,应用程序可能会不响应。多线程处理能够一起运转多个过程。

例如:文字处理器应用程序在您处理文档的一起,能够检查拼写(作为单独的使命)。由于多线程应用程序将程序划分成独立的使命,因而能够在以下方面显著进步功能:

多线程技能使程序的响应速度更快,因为用户界面能够在进行其他工作的一起一直处于活动状况。

当时没有进行处理的使命能够将处理器时刻让给其他使命。

占用很多处理时刻的使命能够定时将处理器时刻让给其他使命。

能够随时停止使命。

能够别离设置各个使命的优先级以优化功能。

是否需求创立多线程应用程序取决于多个因素。在以下情况下,最适合选用多线程处理:

耗时或很多占用处理器的使命堵塞用户界面操作。

各个使命必须等候外部资源(如长途文件或INTERNET衔接)。

例如:用于盯梢WEB页上的链接并下载满意特定条件的文件的INTERNET应用程序“ROBOT”。这种应用程序能够顺次同步下载各个文件,也能够使用多线程一起下载多个文件。多线程办法比同步办法的效率高很多,因为即使在某些线程中长途WEB服务器的响应非常慢,也能够下载文件。

害处:增加了调度和管理的开支,带来了一些不确定性,需求杂乱的同步机制,防止死锁等等。

优点:必定程度上进步响应速度,在多核的情况下仍是更能充分利用CPU资源的。

单线程优缺点:

单线程的也就是程序履行时,所跑的程序途径(处理的东西)是接连次序下来的,必须前面的处理好,后面的才会履行到。

由于时刻片很短,这样给用户的感觉是一起有好多线程在履行。可是线程切换是有价值的,因而假如选用多进程,那么就需求将线程所从属的该进程所需求的内存进行切换,这时刻价值是很多的。而线程切换价值就很少,线程是能够同享内存的。所以选用多线程在切换上花费的比多进程少得多。可是,线程切换仍是需求时刻消耗的,所以选用一个具有两个线程的进程履行所需求的时刻比一个线程的进程履行两次所需求的时刻要多一些。即选用多线程不会进步程序的履行速度,反而会下降速度,可是对于用户来说,能够减少用户的响应时刻。上述成果仅仅针对单CPU,假如对于多CPU或许CPU选用超线程技能的话,选用多线程技能仍是会进步程序的履行速度的。因为单线程只会映射到一个CPU上,而多线程会映射到多个CPU上,超线程技能实质是多线程硬件化,所以也会加速程序的履行速度。

线程相对于进程的优点:

1、开支小

2、资源同享性好。

线程相对于进程的缺点:

1、同享资源需求消耗必定的锁资源,同步相对杂乱。

2、一个线程溃散可能导致整个进程溃散,这个当然是自己的应用程序有问题,

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发

请登录后发表评论