美文网首页
03iOS多线程比较、总结

03iOS多线程比较、总结

作者: i爱吃土豆的猫 | 来源:发表于2022-04-19 15:31 被阅读0次

1.无论使用哪种线程方法进行多线程开发, 每个线程启动后不一定立即执行相应的操作, 具体什么时候执行由系统调用(CPU 空闲时就会执行)
2.更新 UI 应该在主线程(UI线程)进程, 并且异步调用, 避免造成线程阻塞, 常用的方法如下:
- (void)performSelectorOnMainThread:(SEL)aSelector withObject:(id)arg waitUntilDone:(BOOL)wait;

//方法传递主线程[NSThread mainThread])
- (void)performSelector:(SEL)aSelector onThread:(NSThread *)thr withObject:(id)arg waitUntilDone:(BOOL) wait; 

[NSOperationQueue mainQueue] addOperationWithBlock:

//在主线程中,这里改用同步调用 dispatch_sync 的话就会造成线程阻塞情况     
dispatch_async(dispatch_get_main_queue(), ^{}) 

3.NSThread 适合轻量级多线程开发, 控制线程顺序比较难, 同时线程总数无法控制(每次创建并不能重用, 只能从新创建一个新的线程)
4.对于简单的多线程开发建议使用 NSObject 的扩展方法完成, 而不必使用 NSThread
5.可以使用 NSThread 的 currentThread 方法取得当前线程, 使用sleepForTimeInterval方法让当前线程挂起
6.NSOperation 进行多线程开发可以控制线程总数以及依赖关系
7.创建一个 NSOperation 不应该直接调用 start 方法, (如果直接 start 则会在主线程中调用), 而是应该放到NSOperationQueue 中启动
8.相比 NSInvocationOperation 推荐使用 NSBlockOperation, 代码简单, 同时由于闭包性使得它没有传参问题
9.NSOperation 是对 GCD 面向对象的 OC 封装, 而 GCD 基于 C 语言开发, 效率更高, 建议如果任务之间如果有依赖关系或者想要监听任务完成状态的情况下优先使用 NSOperation, 否则使用 GCD
10.NSOperation 是一个对象的基类, 表示一个独立的计算单元, 可以为子类提供有用且线程安全的建立状态, 优先级, 线程数据, 依赖等待取消等操作
11,在 CGD 中串行队列中的任务被安排到一个单一线程执行(不止主线程), 可以方便地控制执行顺序, 并发队列在多个线程中执行(前提是使用异步方法,), 顺序控制相对复杂, 但是更高效
12.在 GCD 中一个操作是多线程还是单线程执行, 取决于当前队列类型和执行方法, 只有队列类型为并行队列并且使用异步方法执行时才能在多个线程中执行(如果是并行队列使用同步方法调用则会在主线程中执行)

多线程
好处:
1.使用线程可以把程序中占据时间长的任务放到后台去处理, 如图片、视频的下载
2.充分发挥多核处理器的优势, 并发执行让系统运行的更快更流畅, 用户体验好
缺点:
1.大量的线程降低代码的可读性
2,更多的线程需要更多的内存空间
3当多个线程对同一资源出现争夺的时候, 要注意线程安全的问题

iOS 三种多线程的编程技术
1.NSThread
2.NSOperation(NSOperationQueue)
3.GCD

任务的执行, 考虑到线程和进程的关系, 考虑到性能和安全的兼顾, 这个过程肯定有不同的节奏
默认主线程是1M, 子线程是512KB, 如果开启了大量的子线程就会消耗更多的内存空间, 影响降低程序的性能

相关文章

  • 03iOS多线程比较、总结

    1.无论使用哪种线程方法进行多线程开发, 每个线程启动后不一定立即执行相应的操作, 具体什么时候执行由系统调用(C...

  • iOS多线程:『GCD』详尽总结

    iOS多线程:『GCD』详尽总结 iOS多线程:『GCD』详尽总结

  • iOS多线程

    #iOS多线程学习&总结 在查阅资料文档,系统得重新审视了下iOS多线程。下面是自己结合资料做的一些整理,比较偏基...

  • 多线程编程模型

    编程里面多线程和分布式是比较难的点, 因为逻辑并非线性的, 可能要考虑各种意外情况. 这里我总结几种常见的多线程...

  • GCD的使用

    多线程中GCD(Grand Central Dispatch)是我们比较常用,今天对于其的常见用法做以总结. Di...

  • 无标题文章

    ### java多线程总结

  • iOS多线程之NSThread

    前面总结了多线程基本概念和iOS多线程PThread的使用,下面接着总结iOS多线程的另外一种实现方案NSThre...

  • iOS并发编程对比总结,NSThread,NSOperation

    总结的比较全面,学习多线程编程的同学可以认真看下。 直接上链接吧 http://blog.csdn.net/zyq...

  • iOS多线程.md

    2018-05-22 iOS多线程-概念iOS多线程:『pthread、NSThread』详尽总结 多线程-概念图...

  • 线程

    iOS 多线程:『GCD』详尽总结 NSThread详解 IOS 多线程编程 『NSOperation、NSOpe...

网友评论

      本文标题: 03iOS多线程比较、总结

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