背景
首先要说明一下为什么写这篇文章。
多线程编程,从理论上讲并不难,实际操作上也无太多可说的,今天主要是对iOS中可以实现多线程的方法进行一下总结。原因很简单,因为有关多线程的问题,是初中级iOS开发人员面试过程中一定会被问到的,当然这也是iOS编程中的基础知识,实际工作中也经常会用到的。会不会有人问,为什么面试的时候一定会被问到?我只能说,因为某些原因呢,面对初中级iOS开发人员,除了这几个类似的问题,面试官也问不出什么了,这个就只能是由大家去亲身体验了,我只代表我个人看法-_-...这里排出算法,haha
我们这里只说最常用的3种:NSTread,NSOperation,GCD,有的童鞋可能会问,问什么是最常用的3种,难道还有其他的?嘿嘿嘿,当然有,那就是Pthreads,这个不常用,为什么?因为这个Pthreads是需要C语言函数的,今天就不多讨论了,我们只讨论一下上面的3种。
first 那就让我们那大家最常用的GCD来开刀吧,那就让我们来看一下什么是Grand Central Dispatch
GCD 呢是 libdispatch 的市场名称,而 libdispatch 作为 Apple 的一个库,为并发代码在多核硬件(跑 iOS 或 OS X )上执行提供有力支持。简单点说,就是GCD会自动合理地利用更多的CPU内核,(比如你的手机是8核16G啥的,嘿嘿嘿)。而且GCD会自动管理线程的生命周期,对于我们开发来说真是傻瓜式的,只需要告诉它应该干什么就好了。
面试问题,说一下GCD有几种队列方式?简单介绍一下
串行队列////队列中的任务会根据队列的定义 FIFO(先进先出啊)的执行,一个接一个的先进先出的进行顺序执行。
并行队列////这就能用到之前提到的多核了,GCD 会根据系统资源控制并行的数量,所以如果任务很多,它并不会让所有任务同时执行。
说一下GCD有几种任务操作?简单叙述一下
同步(sync)和 异步(nsync)
sync会阻塞当前线程,等到当前任务执行完毕,才会继续往下执行,
nsync则不会阻塞当前线程,会继续执行其他任务。
这么说大家是不是多少有点懵13了,队列是空间上的,任务是时间上的。大家可以亲自在Xcode中nslog点东西,就可以明白了。嘿嘿嘿。
今天就先写到这吧,关于多线程的食物还有很多要写的,还有部分实例代码,但是,突然来活了,你说坑不坑爹,你说气不气人,本大爷好不容易这么有灵感写文章,嘿嘿嘿,先这样了。