博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ios 多线程 面试
阅读量:5122 次
发布时间:2019-06-13

本文共 1115 字,大约阅读时间需要 3 分钟。

1 多线程是什么 
同步完成多项任务,提高了资源的使用效率,从硬件、操作系统、应用软件不同的角度去看,多线程被赋予不同的内涵,对于硬件,现在市面上多数的CPU都是多核的,多核的CPU运算多线程更为出色;从操作系统角度,是多任务,现在用的主流操作系统都是多任务的,可以一边听歌、一边写博客;对于应用来说,多线程可以让应用有更快的回应,可以在网络下载时,同时响应用户的触摸操作。在iOS应用中,对多线程最初的理解,就是并发,它的含义是原来先做烧水,再摘菜,再炒菜的工作,会变成烧水的同时去摘菜,最后去炒菜。
 
2 iOS 中的多线程
 
iOS中的多线程,是Cocoa框架下的多线程,通过Cocoa的封装,可以让我们更为方便的使用线程,做过C++的同学可能会对线程有更多的理解,比如线程的创立,信号量、共享变量有认识,Cocoa框架下会方便很多,它对线程做了封装,有些封装,可以让我们创建的对象,本身便拥有线程,也就是线程的对象化抽象,从而减少我们的工程,提供程序的健壮性。
 
GCD是(Grand Central Dispatch) ,从系统级别提供的一个易用地多线程类库,具有运行时的特点,能充分利用多核心硬件。GCD的API接口为C语言的函数,函数参数中多数有Block,,为我们提供强大的“接口”,
 
 
NSOperation与Queue
NSOperation是一个抽象类,它封装了线程的细节实现,我们可以通过子类化该对象,加上NSQueue来同面向对象的思维,管理多线程程序。具体可参看这里:
   
NSThread
NSThread是一个控制线程执行的对象,它不如NSOperation抽象,通过它我们可以方便的得到一个线程,并控制它。但NSThread的线程之间的并发控制,是需要我们自己来控制的,可以通过NSCondition实现。
参看  

 
 
其他多线程
在Cocoa的框架下,通知、Timer和异步函数等都有使用多线程,(待补充).
 
 
 
3 iOS多线程常见面试题
在项目什么时候选择使用GCD,什么时候选择NSOperation?
项目中使用NSOperation的优点是NSOperation是对线程的高度抽象,在项目中使用它,会使项目的程序结构更好,子类化NSOperation的设计思路,是具有面向对象的优点(复用、封装),使得实现是多线程支持,而接口简单,建议在复杂项目中使用。
项目中使用GCD的优点是GCD本身非常简单、易用,对于不复杂的多线程操作,会节省代码量,而Block参数的使用,会是代码更为易读,建议在简单项目中使用。
 
 

转载于:https://www.cnblogs.com/iOS-mt/p/4231695.html

你可能感兴趣的文章
LNMP环境下SendMail+OpenWebMail的详细配置
查看>>
HTML的正确入门姿势——基本结构与基本标签
查看>>
加密模块
查看>>
python之if判断、while循环、for循环
查看>>
SZU-A22
查看>>
js 计算请假时长(去除了周六日,节假日未清除)
查看>>
Hnoi2010 City 城市建设
查看>>
Brewer's CAP Theorem
查看>>
CodeForces The Endless River
查看>>
django项目(CRM项目继续,做到权限粒度划分到按钮)
查看>>
利用函数对对象的处理
查看>>
练习用基础SQL语句
查看>>
微信公众平台开发(107) 分享到朋友圈和发送给好友
查看>>
《分布式Java应用与实践》—— 后面两章
查看>>
NN中BP推导及w不能初始化为0
查看>>
常用范数公式【转载】
查看>>
python爬虫学习记录——各种软件/库的安装
查看>>
Linux150个常用指令
查看>>
Qt 自定义标题栏
查看>>
浏览器内核介绍
查看>>