1.进程和线程分别是什么意思?有什么区别?
进程:
在iOS中每个正在运行的应用程序(app)就是一个进程,每个进程都是相互独立的,每个进程都运行在其专用且受保护的内存中。
线程:
线程是进程运行的基本执行单位,也就是说一个进程可以有很多个线程,进程的所有任务都是由线程来执行的。
用比喻的方法来说,app就像一个工厂,运行的工厂就是一个进程,每个工厂都有自己独立的地址。而里面的工人和机器都是线程,负责的东西不同而已。主机器便是主线程。但进程运行的时候,主线程也就必然运行。当主机器卡住时(主线程阻塞),就会造成工厂停产,崩溃(进程崩溃)。当工人崩溃时(线程崩溃时),工厂(进程)也就崩溃。
2.什么是多线程
多线程:
一个进程可以开启多条线程,并发执行不同的任务,这就是多线程。多线程可以提高程序的执行效率。
原理:
实现多线程是采用一种并发执行机制。
并发执行机制原理:
简单来说就是把一个处理器划分为若干个短的时间片,每个时间片依次轮流处理各个应用程序,由于一个时间片很短,相对于一个程序来说,就好像是处理器在为自己单独服务一样,从而达到多个应用程序在同时进行的效果。
用比喻的方法来说,实现多线程,就好像是一个闪电侠,在银行窗口工作,因为他速度很快的在不同窗口间切换服务,看过去就好像每一个人都有一个专属闪电侠为自己服务,实际来说还是只有一个闪电侠。
优点:
1.使用线程可以把占据时间长的任务放到后台去处理。(就好像当你填表格的时候,我就可以先去服务别的人员)
2.用户体验的提升,如用户点击按钮出发事件的处理,可以弹出进度条来显示处理的进度。
3.程序的运行速度可能加快。
缺点:
1.大量的线程,会影响性能,因为操作系统需要在他们之间切换。(就算是闪电侠也是有服务极限的)
2.更多的线程需要更多的内存空间
3.线程可能会给程序带来“bug”
4.需要注意线程死锁的情况,开发逻辑变的相对复杂
3.iOS多线程开发的常用方式
1.pthread----------------C语言通用的多线程API,跨平台,手动管理线程生命周期,难度大
2.NSThread-------------苹果提供的面向对象操作线程的技术,手动管理线程生命周期,简单方便,但很少用到
3.GCD--------------------苹果开发用于多核编程的解决方法,会自动利用更多的CPU内核,自动管理线程,常用
4.NSOperation---------对GCD的封装。面向对象开发,比GCD更简单易用、代码可读性更高。常用
网友评论