美文网首页
iOS中的多线程简答

iOS中的多线程简答

作者: 希尔罗斯沃德_董 | 来源:发表于2019-04-04 13:16 被阅读0次

一、iOS中使用多线程的方式

主要有三种:NSThread、GCD、NSOperation&NSOperationQueue

二、有什么区别

1、NSThread 和 GCD的区别

1)NSTread是OC类,是对线程的一个封装,而GCD是纯C语言API;

2)NSTread需要我们管理线程的生命周期。包括线程对象的创建、取消、暂停、释放等。而GCD我们只需要关心队列和任务,不用关心底层线程;

3)NSTread提供了线程的取消、暂停的操作接口,但GCD没有这样的直接的API;

4)NSTread是用户级别的线程,不能很好的利用系统资源;而GCD是内核级别的线程,起初设计是针对多核系统开发的,内部统一维护一个线程池,能够根据系统资源合理分配线程数量,高效利用资源,在多核系统实现真正的并发;

5)NSThead只有在我们需要自己管理线程的时候使用比较好,比如我们想自己维持一个常驻线程用于随时唤醒处理一些任务等。其他场景其实都可以用GCD或者NSOperation来替代。而且在处理多任务等场景下GCD更加方便和高效。

2、NSOperation&NSOperationQueue 和GCD的区别

NSOperation&NSOperationQueue 是对GCD的上层封装的OC类。但是NSOperation相比于GCD提供了任务的暂停、恢复和取消、任务间依赖以及任务优先级等丰富的功能,同时可以通过 KVO 对NSOperation的状态进行检测,方便管理我们自定义的任务。NSOperation默认情况下是同步执行的,也就是在当前的线程里面执行,如果想实现异步可以结合NSOperationQueue来用,当NSOperationQueue的最大并发数大于1时可以实现并发。在使用上如果我们只关心任务的发起和结果的情况下两个都可以用,但GCD明显比较方便。所以要结合具体场景使用。

相关文章

  • iOS中的多线程简答

    一、iOS中使用多线程的方式 主要有三种:NSThread、GCD、NSOperation&NSOperation...

  • iOS中的多线程

    iOS中的多线程 现存的iOS多线程解决方案 现在在iOS中要实现多线程有如下四种方法。 PthreadsNSTh...

  • 多线程系列

    --------------------多线程-------------------- 你理解的多线程? iOS中...

  • iOS 多线程

    参考资料:iOS多线程iOS GCD 多线程问题在iOS中目前有4套多线程方案,他们分别是: PthreadsNS...

  • iOS开发进阶-多线程技术

    iOS中多线程 首先看一道面试题 iOS中多线程有哪些实现方案? iOS中,多线程一般有三种方案GCD、NSOpe...

  • iOS-多线程知识点整理

    iOS中多线程 首先看一道面试题 iOS中多线程有哪些实现方案? iOS中,多线程一般有三种方案GCD、NSOpe...

  • iOS多线程--并行开发一

    iOS多线程--并行开发二 重点分析iOS多线程开发:iOS多线程:在iOS中每个进程启动后都会建立一个主线程(U...

  • IOS多线程二 NSThread简约而不简单

    IOS多线程二NSThread简约而不简单 今天就来着手教大家在IOS中简单的实现多线程。IOS实现多线程的方式有...

  • OC--各种线程锁

    参考:正确使用多线程同步锁@synchronized()iOS中的锁iOS多线程安全详解iOS 常见知识点(三):...

  • iOS开发知识点总结(一)

    1.iOS中的多线程 iOS中的多线程,是Cocoa框架下的多线程,通过Cocoa的封装,可以让我们更方便的使用线...

网友评论

      本文标题:iOS中的多线程简答

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