黑马程序员:ios面试宝典之多线程

黑马程序员:ios面试宝典之多线程

ID:32179104

大小:138.10 KB

页数:13页

时间:2019-02-01

黑马程序员:ios面试宝典之多线程_第1页
黑马程序员:ios面试宝典之多线程_第2页
黑马程序员:ios面试宝典之多线程_第3页
黑马程序员:ios面试宝典之多线程_第4页
黑马程序员:ios面试宝典之多线程_第5页
资源描述:

《黑马程序员:ios面试宝典之多线程》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、1.多线程(★★)1、unix上进程怎么通信?UNIX主要支持三种通信方式:1.基本通信:主要用来协调进程间的同步和互斥(1)锁文件通信通信的双方通过查找特定目录下特定类型的文件(称锁文件)来完成进程间对临界资源访问时的互斥;例如进程p1访问一个临界资源,首先查看是否有一个特定类型文件,若有,则等待一段时间再查找锁文件。(2)记录锁文件2.管道通信:适应大批量的数据传递3.IPC    :适应大批量的数据传递2、列举几种进程的同步机制、进程的通信途径、死锁及死锁的处理方法。答案:  原子操作信号量机制

2、    自旋锁    管程,会合,分布式系统 进程之间通信的途径答案:共享存储系统消息传递系统管道:以文件系统为基础 进程死锁的原因答案:资源竞争及进程推进顺序非法 死锁的4个必要条件答案:互斥、请求保持、不可剥夺、环路 死锁的处理答案:鸵鸟策略、预防策略、避免策略、检测与解除死锁3、谈谈你对多线程开发的理解?ios中有几种实现多线程的方法?好处:1.使用线程可以把占据时间长的程序中的任务放到后台去处理2.用户界面可以更加吸引人,这样比如用户点击了一个按钮去触发某些事件的处理,可以弹出一个进度条来显示

3、处理的进度3.程序的运行效率可能提高4·在一些等待的任务实现上如用户输入、文件读写和网络收发数据等,线程就比较有用了。缺点:1.如果有大量的线程,会影响性能,因为操作系统需要在它们之间切换。2.更多的线程需要更多的内存空间。3.线程的中止需要考虑其对程序运行的影响。4.通常块模型数据是在多个线程间共享的,需要防止线程死锁情况的发生。实现多线程的方法:NSObject类方法NSThreadNSOperationGCD4、线程与进程的区别和联系?线程是进程的基本单位进程和线程都是由操作系统所体会的程序运行

4、的基本单元,系统利用该基本单元实现系统对应用的并发性。进程和线程的主要差别在于它们是不同的操作系统资源管理方式。进程有独立的地址空间,一个进程崩溃后,在保护模式下不会对其它进程产生影响,而线程只是一个进程中的不同执行路径。线程有自己的堆栈和局部变量,但线程之间没有单独的地址空间,一个线程死掉就等于整个进程死掉,所以多进程的程序要比多线程的程序健壮,但在进程切换时,耗费资源较大,效率要差一些。但对于一些要求同时进行并且又要共享某些变量的并发操作,只能用线程,不能用进程。5、简述多线程的作用以及什么地方会

5、用到多线程?OC实现多线程的方法有哪些?(1)、多线程的作用:可以解决负载均衡问题,充分利用cpu资源。为了提高CPU的使用率,采用多线程的方式去同时完成几件事情而互不干扰,(2)、大多情况下,要用到多线程的主要是需要处理大量的IO操作时或处理的情况需要花大量的时间等等,比如:读写文件、视频图像的采集、处理、显示、保存等。(3)、iOS中多线程的方法主要有三种:1、NSThread。2、NSOperation。3、GCD。iOS中多线程有哪几种?各自之间有什么区别?这个问题,毋庸置疑,面试必问!!!1

6、).NSOperation与GCD的区别:GCD与NSThread的区别:1). NSThread通过@selector指定要执行的方法,代码分散2).GCD通过block指定要执行的代码,代码集中,所有的代码写在一起的,让代码更加简单,易于阅读和维护3).使用GCD不需要管理线程的创建/销毁/复用的过程!程序员不用关心线程的生命周期4).如果要开多个线程NSThread必须实例化多个线程对象5).NSThread靠NSObject的分类方法实现的线程间通讯,6、谈谈多线程安全问题的几种解决方案?何为

7、线程同步,如何实现的?分线程回调主线程方法是什么,有什么作用?解决方案:使用锁:锁是线程编程同步工具的基础。锁可以让你很容易保护代码中一大块区域以便你可以确保代码的正确性。使用POSIX互斥锁;使用NSLock类;使用@synchronized指令等。回到主线程的方法:dispatch_async(dispatch_get_main_queue(),^{});作用:主线程是显示UI界面,子线程多数是进行数据处理7、详细谈谈GCD推出的时间iOS4目的是用来取代NSThread(ios2.0推出)的,是

8、C语言框架,它能够自动利用更多CPU的核数,并且会自动管理线程的生命周期。  CGD的两个核心概念:任务,队列   任务:记为在block中执行的代码。   队列:用来存放任务的。   注意事项:  队列!=线程!  队列中存放的任务最后都要由线程来执行!  队列的原则:先进先出,后进后出(FIFO/FirstInFirstOut)    队列又分为四种种:1串行队列 2并发队列3主队列4全局队列   串行队列:任务一个接一个的执行。  并发队列:队列中

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。