美文网首页iOS传道
多线程面试题高级

多线程面试题高级

作者: 聆听者JYZ | 来源:发表于2017-02-15 15:35 被阅读33次

    1、首先认识清楚,多线程分为:并行和串行,,并行和串行又可以包括同步线程和异步线程。GCD仅仅支持FIFO(先入先出)队列

    2、不管是并行还是串行,只要是同步线程,都是按顺序执行;

    3、技术几个名词:线程阻塞(dispatch_barrier_async)、线程等待(dispatch_after)、线程死锁,在全局并发队列中,可以设置优先级

    4、在认识多线程特点:我们平时用时需要先建立多线程对象,然后在添加任务(同步、异步 执行),,,有时候我们有多个线程,一般用线程组来管理(在线程组里的线程都完成时,或触发全部完成方法(dispatch_group_notify))。

    5、死锁的4个必要条件:互斥、请求保持、不可剥夺、环路(主要是资源竞争及进程推进顺序非法)

    补充关系:

    ①:先搞清两者的关系,NSOpertaionQueue用GCD构建封装的,是GCD的高级抽象!

    ②:GCD仅仅支持FIFO(先入先出)队列,而NSOperationQueue中的队列可以被重新设置优先级,从而实现不同操作的执行顺序调整。GCD不支持异步操作之间的依赖关系设置。如果某个操作的依赖另一个操作的数据(生产者-消费者模型是其中之一),使用NSOperationQueue能够按照正确的顺序执行操作。GCD则没有内建的依赖关系支持。

    ③:NSOperationQueue支持KVO,意味着我们可以观察任务的执行状态。

    性能:

    ①:GCD更接近底层,而NSOperationQueue则更高级抽象,所以GCD在追求性能的底层操作来说,是速度最快的。

    ③:如果异步操作的过程需要更多的被交互和UI呈现出来,NSOperationQueue会是一个更好的选择。底层代码中,任务之间不太互相依赖,而需要更高的并发能力,GCD则更有优势

    功能点 功能点

    相关文章

      网友评论

        本文标题:多线程面试题高级

        本文链接:https://www.haomeiwen.com/subject/cweqwttx.html