iOS多线程编程技术之NSThread、Cocoa NSOperation、GCD

多线程篇(一)


1.什么是进程?

我们手机里面每一个应用程序称一个进程.

每个进程都至少会有一个主线程(main),需要时可以创建多个线程.

 

2.线程?

线程是程序中一个单一的顺序控制流程,单个进程中可以有多个线程来完成不同的任务.

(注:程序启动后,系统就会创建一个主线程(main),所有的UI控件都必须在主线程创建,因此也叫主线程为UI线程)

 

3.多线程?

单个进程中同时运行多个线程,完成不同的工作,称多线程.

 

思路拓展:

如果将所有的任务放在UI主线程里面操作,容易造成UI阻塞,也就是程序运行卡顿.现在苹果官方已经支持在后台处理一些事件,那么可以使用多线程将占据时间长的程序放到后台处理.

 

4.策略(三个类)?

4.1.NSThread

4.2.Cocoa NSOperation

4.3.GCD

 

4.1.NSThread

   考虑使用情况:

   创建一个 NSThread对象管理一个线程.

   要把 OC 中的方法,放到独立线程里面运行时,可以用此类方法.

   当要执行一个长时间的任务时.

 

   创建方法:

   类方法,直接创建开启一个线程去完成一个任务.

   +detachNewThreadSelector:toTarget:withObject:

    减方法创建,不会直接创建,需要 start 一下.

   -initWithTarget:selector:Object:

   隐式创建方法:在后台创建一个线程.

   -performSelectorInBackground:withObject:



   使用 Nsthread 需要注意的问题.

  

4.2.NSOperationQueue

  NSOperation对象是一个 single-shot(一次性)对象,当他执行完后就不能再次使用.需要用需要重新创建.

 

可以设置并发执行数量

可以设置队列里面线程的优先级

          

 

 -(void)cancel 的使用

-通知操作对象,应该停止执行.

-若收到消息时,操作已经完成,则对该操作无影响.

-若收到消息时,操作在操作队列中,但还未执行,则操作会被提前移除队列

 

4.3GCD(Grand Central Dispatch)

   是 apple 开发的一个多核编程的较新的解决方案.

   用于优化程序,支持多核处理器,以及其他对称多处理系统

   他是一个在线程池模式的基础上执行的并行任务.在 Mac OS X10.6雪豹中首次推出,也可在 iOS 4及以上版本使用.

GCD 使用;

将耗时的计算放到主线程这之外,达到平滑 UI 的效果.

处理并发多线程

处理线程间依赖关系

 

 问题:当多个线程同步去访问同同一个资源的时候,怎么解决系统资源不能同步共享?

GCD 与多核运算的关系?

GCD 是 apple 针对多核处理器并行运算提出的解决方案

GCD 能充分发挥硬件的性能

 

GCD与 NSOperation之间的?

二者功效相同.
      NSOperationQueue 是用 GCD 创建,是 GCD 的高级抽象.

GCD 只支持 FIFO 队列,而NSOperationQueue的队列操作可以重新排序(设置优先级)

NSOperationQueue支持操作间设置依赖关系,而 GCD 不支持(遵守 first infirst out先进先出).

 

 

5三者实际是用 demo

 5 .1NSThread

 

5.2GCD

 

5.3NSOperationQueue

MYOperation 继承于NSOperation

maxConcurrentOperationCount 设置成1,那么能保证最大并发数为1,这样想成 就将一个一个完成.

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值