ios-面试

ios-进程、线程、队列、同步&异步、并行&串行

2019-12-04  本文已影响0人  简鱼7819

一、进程、线程

1,进程

(1)、系统启动一个应用程序就是开启一个进程,与Android一个应用可能有多个进程,ios的中一个应用程序运行只有一个进程。

(2)、进程会开辟一块独立的内存空间,该内存空间被保护,不做申请不得访问该内存空间

(3)、代码中进程是由UIApplication管理的,跨进程访问与URL Schemes和info.plist中设置白名单有关

2,线程

(1)、线程依赖进程存在,且一个进程至少持有一个线程,例如刷新UI的主线程

(2)、线程是CPU最小调度单元

(3)、线程的作用就是执行App中的功能代码,进程中所有任务都是通过线程来执行完成的

(4)、线程独立运行,一个线程不知道其他线程具体执行内容

(5)、多线程并行时,线程有着优先级,优先级低的多线程时可能被挂起,方便其他线程执行

(6)、一个线程同时执行多个任务,只能顺序执行。因为同一时间一个线程只能执行一个任务

3,进程和线程的联系

(1)、进程负责整个App生命周期,线程负责这个进程中功能的实现

(2)、进程负责开辟独立内存,线程们可以分享使用这块内存空间

二、队列、同步&异步、并行&串行

1,队列

队列是用来保存管理任务的,日常开发中经常用到队列和线程结合使用,就是线程去队列中取任务进行执行

队列主要分为:串行队列并行队列主队列,串行队列和并行队列里面又分同步异步

2,同步、异步

同步和异步决定了要不要开启新的线程

同步:在当前线程中执行任务,不具备开启新线程的能力

异步:在新的线程中执行任务,具备开启新线程的能力

3,并行、串行

并发和串行决定了任务的执行方式

并行:多个任务并发(同时)执行,异步是多个任务并行的前提

串行:一个任务执行完毕后,再执行下一个任务

参考链接https://www.jianshu.com/p/68b274548069

参考链接https://blog.csdn.net/u010231453/article/details/53542672

上一篇下一篇

猜你喜欢

热点阅读