nsoperation和gcd的区别

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了nsoperation和gcd的区别相关的知识,希望对你有一定的参考价值。

参考技术A (1)NSThread
轻量级线程操作需要我自创建线程调度任务销毁线程
① 台线程:performSelectorInBackground
② 主线程;performSelectorOnMainThread
③ 两线程,要继承自NSObject象,都调用
④ 手辟线程:NSThread * thread = [NSThread alloc] initWithTarget: selector: object:
[thread start];
⑤ 自辟线程:[NSThread detachNewThreadSelector: toTarget: withObject:]
⑥ 判断线程否主线程:[NSThread isMainThread]
⑦ 线程休眠:[NSThread sleepForTimeInterval:2]
⑧ 查看前线程:[NSThread currentThread]
(2)GCD
Grand Central Dispatch缩写 宏央调度 基于C语言
GCD存于libdispatch.dylib库调度库包含GCD所东西任何ios程序默认加载库程序运行程态加载库需要我手导入
GCD函数数都dispatch
GCD优势:
1.苹公司核并行运算提解决案;
2.工作候自利用更处理器核;
3.用关线程代码实现, 即需要关候起线程, 关闭线程. GCD负责创建线程调度任务;
4.需要创建要执行任务, 任务添加适队列.
dispatch queue (调度队列)
核理念: 期运行任务拆工作单元, 并些工作单元添加调度队列
(意思任务添加队列)
串行并行队列
串行队列添加队列任务按照添加顺序依执行FIFO先进先
并行队列任务同执行需要条线程
同步与异步
同步:前任务执行完,边任务等待前任务执行完,再执行
异步:管前任务否执行完毕,任务都直接执行
总结:
1.同步异步决定否启线程.
2.串行并行决定任务线程执行任务并发执行任务.
3.并行队列异步函数才效
GCD 使用队列(queue)管理线程队列三种
1.自定义串行并行队列
2.运行线程四优先级同全局并行队列globalQueue
3.运行主线程串行队列mianQueue(主线程,主队列使用同步任务造死锁)
组并行任务执行完毕做某操作,使用dispatch_group

线程同变量修改需要加锁保证变量同能线程修改线程修改完毕其线程才能修改使用:NSLock@synchronized
单例模式:类系统实例象,通全局入口点实例象进行访问.
iOS单例模式实现两种:非ARCARC + GCD;
(3)NSOperation
纯OC代码 操作队列,GCD封装.抽象类能使用其类象系统提供两类象别 NSInvocationOperation NSBlockOperation通我自定义 NSOperation 类重写类 main 需要线程执行任务放 main NSOperation 象添加 NSOperationQueue 自线程执行 main
4.GCD NSOperation 进行比较
(1).NSOperation GCD 封装面相象类GCD 组 API
(2).NSOperation 实现些 GCD 实现或者实现比较复杂功能比:设置并发数设置线程间依赖关系
(3).实现某线程功能使用 GCD简单易用实现某线程模块使用 NSOperation便类管理
5.nonatomicatomic
nonatomic非原性线程访问修改加锁
atomic原性线程访问加锁
iOS 推荐我使用 nonatomic移端发没复杂线程场景加锁解锁提高效率
系统变象NSMutableArrayNSMutabelString 都线程安全线程修改需要加锁

以上是关于nsoperation和gcd的区别的主要内容,如果未能解决你的问题,请参考以下文章

iOS开发-NSOperation与GCD区别

nsoperation和gcd的区别

GCD / NSOperation

gcd和NSOperationQueue区别

iOS中用GCD和NSOperation多个异步操作的关联

九使用多线程——NSThread,GCD和NSOperation