IOS多线程(NSThread,NSOperation,Grand Central Dispatch)

•NSThread:

  –优点:NSThread 比其他两个轻量级,使用简单

  –缺点:需要自己管理线程的生命周期、线程同步、加锁、睡眠以及唤醒等。线程同步对数据的加锁会有一定的系统开销

•NSOperation

  –不需要关心线程管理,数据同步的事情,可以把精力放在自己需要执行的操作上

  –NSOperation是面向对象的

  - (void)performSelectorOnMainThread:(SEL)aSelector withObject:(id)arg waitUntilDone:(BOOL)wait;

•如果要更新UI界面,可以在后台线程中调用performSelectorOnMainThread方法

•提示:尽管使用performSelectorInBackground方法调用的任务可以更新UI界面,但是在实际开发中,涉及到UI界面的更新操作,还是要使用performSelectorOnMainThread   方法,以避免不必要的麻烦

•开启后台执行任务的方法

  -(void)performSelectorInBackground:(SEL)aSelector withObject:(id)arg

•在后台线程中通知主线程执行任务的方法

  –(void)performSelectorOnMainThread:(SEL)aSelector withObject:(id)arg waitUntilDone:(BOOL)wait;

•获取线程信息

  [NSThread currentThread];

•线程休眠

  [NSThread sleepForTimeInterval:1.0f];

 + (void)detachNewThreadSelector:(SEL)selector toTarget:(id)target withObject:(id)argument;

 - (id)initWithTarget:(id)target selector:(SEL)selector object:(id)argument;

•detachNewThreadSelector方法会直接启动线程方法

•initWithTarget需要调用start方法才能够启动线程方法

•参数说明:

  –selector:线程执行的方法,只能有一个参数,不能有返回值

  –target:selector消息发送的对象

  –argument:传输给target的唯一参数,也可以是nil

•NSOperation的两个子类

  1.NSInvocationOperation

  2.NSBlockOperation

•工作原理:

  1.用NSOperation封装要执行的操作

  2.将创建好的NSOperation对象放NSOperationQueue中

  3.启动OperationQueue开始新的线程执行队列中的操作

•注意事项:

  1.使用多线程时通常需要控制线程的并发数,因为线程会消耗系统资源,同时运行的线程过多,系统会变慢

  2.使用以下方法可以控制并发的线程数量:

-(void)setMaxConcurrentOperationCount:(NSInteger)cnt;

时间: 2024-07-30 10:00:53

IOS多线程(NSThread,NSOperation,Grand Central Dispatch)的相关文章

【转载】iOS多线程编程之Grand Central Dispatch(GCD)介绍和使用

[转载]http://blog.csdn.net/totogo2010/article/details/8016129 iOS多线程编程之Grand Central Dispatch(GCD)介绍和使用 分类: iOS开发进阶2012-09-25 16:22 35382人阅读 评论(32) 收藏 举报 目录(?)[+] 介绍: Grand Central Dispatch 简称(GCD)是苹果公司开发的技术,以优化的应用程序支持多核心处理器和其他的对称多处理系统的系统.这建立在任务并行执行的线程

iOS多线程编程之Grand Central Dispatch(GCD)介绍和使用

介绍: Grand Central Dispatch 简称(GCD)是苹果公司开发的技术.以优化的应用程序支持多核心处理器和其它的对称多处理系统的系统.这建立在任务并行运行的线程池模式的基础上的.它首次公布在Mac OS X 10.6 ,iOS 4及以上也可用. 设计: GCD的工作原理是:让程序平行排队的特定任务.依据可用的处理资源,安排他们在不论什么可用的处理器核心上运行任务. 一个任务能够是一个函数(function)或者是一个block. GCD的底层依旧是用线程实现,只是这样能够让程序

iOS 多线程编程之Grand Central Dispatch(GCD)

介绍: Grand Central Dispatch 简称(GCD)是苹果公司开发的技术,以优化的应用程序支持多核心处理器和其他的对称多处理系统的系统.这建立在任务并行执行的线程池模式的基础上的.它首次发布在Mac OS X 10.6 ,iOS 4及以上也可用. 设计: GCD的工作原理是:让程序平行排队的特定任务,根据可用的处理资源,安排他们在任何可用的处理器核心上执行任务. 一个任务可以是一个函数(function)或者是一个block. GCD的底层依然是用线程实现,不过这样可以让程序员不

[转]iOS多线程编程之Grand Central Dispatch(GCD)介绍和使用

介绍: Grand Central Dispatch 简称(GCD)是苹果公司开发的技术,以优化的应用程序支持多核心处理器和其他的对称多处理系统的系统.这建立在任务并行执行的线程池模式的基础上的.它首次发布在Mac OS X 10.6 ,iOS 4及以上也可用. 设计: GCD的工作原理是:让程序平行排队的特定任务,根据可用的处理资源,安排他们在任何可用的处理器核心上执行任务. 一个任务可以是一个函数(function)或者是一个block. GCD的底层依然是用线程实现,不过这样可以让程序员不

iOS学习篇之Grand Central Dispatch(GCD)

我这里做一个简单的记录,担心现在看完了如果不做记录将来还得重头看,太浪费时间了. 全文翻译可谓是漏斗百出,将就着理解一下吧. 一些比较通俗易懂的文章推荐: GCD (Grand Central Dispatch) 笔记.Grand Central Dispatch(GCD).block && Grand Central Dispatch) 原文地址:Grand Central Dispatch (GCD) Reference CGD包含语法特征(直译是语法特征/功能),运行时库和系统增强即

Swift - 多线程实现方式 - Grand Central Dispatch(GCD)

1,Swift继续使用Object-C原有的一套线程,包括三种多线程编程技术:(1)Thread(2)Cocoa Operation(Operation和OperationQueue)(3)Grand Central Dispath(GCD) 2,本文着重介绍Grand Central Dispath(GCD) GCD是Apple开发的一个多核编程的解决方法,基本概念就是dispatch queue(调度队列),queue是一个对象,它可以接受任务,并将任务以先到先执行的顺序来执行.dispat

iOS 多线程 NSThread NSOperation NSOperationQueue GCD 线程锁 线程阻塞

iPhone中的线程应用并不是无节制的,官方给出的资料显示,iPhone OS下的主线程的堆栈大小是1M,第二个线程开始就是512KB,并且该值不能通过编译器开关或线程API函数来更改,只有主线程有直接修改UI的能力,所以一些数据层面可以开辟线程来操作进行,iOS线程的操作方法有NSThread NSOperation NSOperationQueue GCD: NSThread方法有 //NSThread自动 - (IBAction)didClickNSThreadAutoButtonActi

iOS开发之再探多线程编程:Grand Central Dispatch详解

之前关于iOS开发多线程的内容发布过一篇博客,其中介绍了NSThread.操作队列以及GCD,介绍的不够深入.今天就以GCD为主题来全面的总结一下GCD的使用方式.GCD的历史以及好处在此就不做过多的赘述了.本篇博客会通过一系列的实例来好好的总结一下GCD.GCD在iOS开发中还是比较重要的,使用场景也是非常多的,处理一些比较耗时的任务时基本上都会使用到GCD, 在使用是我们也要主要一些线程安全也死锁的东西. 本篇博客中对iOS中的GCD技术进行了较为全面的总结,下方模拟器的截图就是我们今天要介

iOS Grand Central Dispatch(GCD) 的简单理解

引言: GCD的全称是Grand Central Dispatch,是苹果在iOS4.0发布的一套处理并发运算方面的API.其用途是为了提高处理器多核运算的能力. GCD有点像NSOperationQueue,它们都允许程序将任务切分为多个单一任务然后提交至工作队列来并发地或者串行地执行,但GCD比之NSOpertionQueue更底层更高效. GCD的工作原理: GCD的工作原理是让程序平行排队的特定任务,根据可用的处理资源,安排他们在任何可用的处理器核心上执行任务. 一个任务可以是一个函数(

ios 多线程开关,有关线程的一些用法和详细讲解,NSThread , NSOperation ,Grand Central Dispatch ( GCD )

IOS支持的多线程技术: 一.Thread: 1)显式创建线程:NSThreed 2)隐式创建线程:NSObject 二.Cocoa operations: NSOperation类是一个抽象类,因为我们必须使用它的两个子类. 1)NSInvocationOperation 2)NSBlockOperation ———————————————————————————— 3)NSOperationQueue(继承于NSObject) 三.Grand Central Dispatch (GCD):