1 / 13
文档名称:

黑马程序员:IOS面试宝典之多线程.docx

格式:docx   大小:138KB   页数:13页
下载后只包含 1 个 DOCX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

黑马程序员:IOS面试宝典之多线程.docx

上传人:287865472 2017/7/16 文件大小:138 KB

下载得到文件列表

黑马程序员:IOS面试宝典之多线程.docx

相关文档

文档介绍

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

进程之间通信的途径
答案:共享存储系统消息传递系统管道:以文件系统为基础 

进程死锁的原因
答案:资源竞争及进程推进顺序非法 

死锁的4个必要条件
答案:互斥、请求保持、不可剥夺、环路 

死锁的处理
答案:鸵鸟策略、预防策略、避免策略、检测与解除死锁
3、谈谈你对多线程开发的理解?ios中有几种实现多线程的方法?
好处:

,这样比如用户点击了一个按钮去触发某些事件的处理,可以弹出一个进度条来显示处理的进度

4·在一些等待的任务实现上如用户输入、文件读写和网络收发数据等,线程就比较有用了。
缺点:
,会影响性能,因为操作系统需要在它们之间切换。


,需要防止线程死锁情况的发生。
实现多线程的方法:
NSObject类方法
NSThread
NSOperation
GCD
4、线程与进程的区别和联系?
线程是进程的基本单位进程和线程都是由操作系统所体会的程序运行的基本单元,系统利用该基本单元实现系统对应用的并发性。进程和线程的主要差别在于它们是不同的操作系统资源管理方式。进程有独立的地址空间,一个进程崩溃后,在保护模式下不会对其它进程产生影响,而线程只是一个进程中的不同执行路径。线程有自己的堆栈和局部变量,但线程之间没有单独的地址空间,一个线程死掉就等于整个进程死掉,所以多进程的程序要比多线程的程序健壮,但在进程切换时,耗费资源较大,效率要差一些。但对于一些要求同时进行并且又要共享某些变量的并发操作,只能用线程,不能用进程。
5、简述多线程的作用以及什么地方会用到多线程? OC实现多线程的方法有哪些?
(1)、多线程的作用:可以解决负载均衡问题,充分利用cpu资源。为了提高CPU的使用率,采用多线程的方式去同时完成几件事情而互不干扰,
(2)、大多情况下,要用到多线程的主要是需要处理大量的IO操作时或处理的情况需要花大量的时间等等,比如:读写文件、视频图像的采集、处理、显示、保存等。
(3)、iOS中多线程的方法主要有三种: 1、NSThread。2、NSOperation。3、GCD。
iOS中多线程有哪几种?各自之间有什么区别?这个问题,毋庸置疑,面试必问!!!
1).NSOperation与GCD的区别:
GCD与NSThread的区别:
1). NSThread 通过***@selector 指定要执行的方法,代码分散
2).GCD 通过 block 指定要执行的代码,代码集中, 所有的代码写在一起的,让代码更加简单,易于阅读和维护
3).使用 GCD 不需要管理线程的创建/销毁/复用的过程!程序员不用关心线程的生命周期
4).如果要开多个线程 NSThread 必须实例化多个线程对象
5).NSThread 靠 NSObject 的分类方法实现的线程间通讯,
6、谈谈多线程安全问题的几种解决方案?何为线程同步,如何实现的?分线程回调主线程方法是什么,有什么作用?
解决方案: 使用锁: 锁是线程编程同步工具的基础。锁可以让你很容易保护代码中一大块区域以便你可以确保代码的正确性。使用POSIX互斥锁; 使用NSLock类; 使用***@synchronized指令等。
回到主线程的方法: dispatch_async(dispatch_get_main_queue(), ^{ });
作用: 主线程是显示UI界面,子线程多数是进行数据处理
7、详细谈谈GCD
推出的时间 iOS4 目的是用来取代NSThread()的,是 C语言框架,它能够自动利用更多CPU的核数,并且会自动管理线程的生命周期。
    CGD的两个核心概念:任务, 队列
     任务:记为在block中