Fork me on GitHub

文章分类 -  MutiThread

1 2 下一页

performSelectorInBackground V.S detachNewThreadSelector?
摘要:Both detachNewThreadSelector and performSelectorInBackground are used to call a method in the background.Is there any difference between the 2 methods? or do they both work the same way?answer:They're both essentially the same but slightly different paradigms. Behind the scenes they do exactly t 阅读全文

posted @ 2012-05-10 16:10 pengyingh 阅读(556) 评论(0) 推荐(0) 编辑

UIApplication委托信息(多任务)
摘要:一般的应用在进入后台的时候可以获取一定时间来运行相关任务,也就是说可以在后台运行一小段时间。还有三种类型的可以运行在后台,1.音乐2.location3.voip大多数应用程序进入后台状态不久后转入暂停状态。在这种状态下,应用程序不执行任何代码,并有可能在任意时候从内存中删除。应用程序提供特定的服务,用户可以请求后台执行时间,以提供这些服务。判断是否支持多线程UIDevice*device=[UIDevicecurrentDevice]; BOOLbackgroundSupported=NO; if([devicerespondsToSelector:@selector(isMultitask 阅读全文

posted @ 2012-05-04 11:25 pengyingh 阅读(1330) 评论(0) 推荐(0) 编辑

iOS多任务:suspend VS terminate
摘要:iOS4.0开始支持multitasking,这是一件令人振奋的消息。但对程序员们来说,却未必如此。苹果至今不在SDK中提供退出应用程序的API。要退出程序,必须通过Home键。但从iOS4.0开始,按Home键iOS用suspend(挂起)代替了terminate(退出)。这个情况可以通过Info.plist设置改变,如果你将 UIApplicationExitsOnSuspend或者Applicationdos not run in background设置为true(注意不是YES),那么当按下Home键后,程序就会退出而不是挂起。例如,在程序OpenUrl中,我们在程序一启动,就调用S 阅读全文

posted @ 2012-04-09 08:39 pengyingh 阅读(368) 评论(0) 推荐(0) 编辑

iphone多线程编程
摘要:这篇文章转自 http://anxonli.iteye.com/blog/1097777,集中与iOS的多核编程和内存管理,大家完全可以使用苹果的多核编程框架来写出更加responsive的应用。多核运算在iOS中concurrency编程的框架就是GCD(Grand Central Dispatch), GCD的使用非常简单。它把任务分派到不同的queue队列来处理。开发者把任务代码装到一个个block里面,操作系统把这些任务代码分派到不同的资源 里去处理,一个简单的例子来说,为什么初学者写tableview的时候,滑动列表时总会很卡,因为很多初学者把图片装载放到main thread主线程 阅读全文

posted @ 2012-03-28 17:57 pengyingh 阅读(342) 评论(0) 推荐(0) 编辑

iphone开发——同时新建多个线程不执行的问题
摘要:今天遇到一个奇怪的问题,使用NSOperationQueue连续添加多个子线程时出现子线程不执行的问题。解决方法如下:在连续的打开多个子线程时,设置一定的时间间隔。 [NSThread sleepForTimeInterval:0.1]; NSInvocationOperation * theOp = [[NSInvocationOperation alloc] initWithTarget:self selector:@selector(getDetailProfile:) object:(void *)0]; [[Func appOperationQueue] addOperation:t 阅读全文

posted @ 2012-03-04 13:29 pengyingh 阅读(216) 评论(0) 推荐(0) 编辑

使用NSOperation和NSOperationQueue启动多线程
摘要:实例:2:使用NSOperation和NSOperationQueue启动多线程在app store中的很多应用程序非常的笨重,他们有好的界面,但操作性很差,比如说当程序从网上或本地载入数据的时候,界面被冻结了,用户只能等程序完全载入数据之后才能进行操作。当打开一个应用程序时,iphone会产生一个包含main方法的线程,所用程序中的界面都是运行在这个线程之中的(table views, tab bars, alerts…),有时候我们会用数据填充这些view,现在问 题是如何有效的载入数据,并且用户还能自如的操作程序。方法是启动新的线程,专门用于数据的下载,而主线程不会因为下载... 阅读全文

posted @ 2012-02-28 13:36 pengyingh 阅读(2374) 评论(0) 推荐(0) 编辑

NSOperation的子集–NSInvocationOperation 多线程编程
摘要:多线程编程是防止主线程堵塞,增加运行效率等的最佳方法。而原始的多线程方法存在很多的毛病,包括线程锁死等。在Cocoa中,Apple提供了NSOperation这个类,提供了一个优秀的多线程编程方法。本次介绍NSOperation的子集–NSInvocationOperation。Ios代码 @implementationMyCustomClass-(void)launchTaskWithData:(id)data{//创建一个NSInvocationOperation对象,并初始化到方法//selector参数后的值是你想在另外一个线程中运行的方法//object后的值是想传递给前面方法的数据 阅读全文

posted @ 2012-02-20 14:26 pengyingh 阅读(1368) 评论(0) 推荐(0) 编辑

Queue自定义NSOperation,并发需注意
摘要:OperationQueue添加, 自定义继承自NSOperation的子类,若开启并发,重复执行5次左右,会卡在NSOperation类:- (void)finish { //结束线程用到 [selfwillChangeValueForKey:@"isExecuting"]; [selfwillChangeValueForKey:@"isFinished"]; executing = NO; finished = YES; [selfdidChangeValueForKey:@"isExecuting"]; [selfdidChan 阅读全文

posted @ 2012-02-19 13:32 pengyingh 阅读(1813) 评论(1) 推荐(0) 编辑

iPhone多线程开发之线程队列NSOperationQueue与自定义Protocol
摘要:http://www.cnblogs.com/cherri/archive/2010/12/03/1895541.html一.多线程对于iPhone应用程序开发很重要 在一个程序中,这些独立运行的程序片断叫作“线程”(Thread),利用它编程的概念就叫作“多线程处理”。多线程处理一个常见的例子就是用户界面设计,利用线程,用户可按下一个按钮,然后程序会立即作出响应,而不是让用户等待程序完成了当前任务以后才开始响应,这就是所谓的阻塞主线程使得界面被冻结。 特别是在一些基于网络的应用里,多线程技术显得尤为重要。当用户向服务器发出一个请求时,你需要做的有发送请求,接收数据,有时还需要解析数据(xm. 阅读全文

posted @ 2012-02-19 10:33 pengyingh 阅读(1348) 评论(0) 推荐(1) 编辑

iOS并发编程指南
摘要:iOS Concurrency Programming GuideiOS 和 Mac OS 传统的并发编程模型是线程,不过线程模型伸缩性不强,而且编写正确的线程代码也不容易。Mac OS 和 iOS 采取 asynchronous design approach 来解决并发的问题。引入的异步技术有两个:Grand Central Dispatch:系统管理线程,你不需要编写线程代码。只需定义想要执行的任务,然后添加到适当的dispatch queue。Grand Central Dispatch会负责创建线程和调度你的任务。系统直接提供线程管理,比应用实现更加高效。Operation Queu 阅读全文

posted @ 2012-02-19 03:04 pengyingh 阅读(5440) 评论(0) 推荐(1) 编辑

iphone中使用NSoperation实现图片异步加载
摘要:http://www.itivy.com/iphone/archive/2011/11/7/iphone-nsoperation-asyn-download-image.html采用UITableView显示从网络上下载的图片,因为网络图片下载比较耗费时间,一般采用边显示文字,内容,后台下载图片,下载完成后刷新TableViewCell ,本文将演示如何通过自定的UITableViewCell,显示图片。1。定义ImageTableViewCell123456789@interface ImageTableViewCell : UITableViewCell {UILabel *txtLabe 阅读全文

posted @ 2012-02-19 03:00 pengyingh 阅读(309) 评论(0) 推荐(0) 编辑

Concurrency 学习 (Mac & iphone)
摘要:Concurrency是ios4.0和macosx10.6引入的一个新的东西根据我的学习和了解Concurrency就是为了更好的使用多核CPU,在单核下使用thread就可以, 但是在多核下使用thread不能很好的发挥多核的优势,用以更好的实现多任务.Concurrency 使用技术 异步模式 (asynchronous design approach) Grand Central Dispatch (需要以后近一步研究,意思就是自动管理线程运行,线程代码可以在更高效的系统层运行) Operation queues Dispatch Queues Dispatch Sources1)Op. 阅读全文

posted @ 2012-02-19 02:51 pengyingh 阅读(525) 评论(0) 推荐(0) 编辑

(问题)operation is executing and cannot be enqueued
摘要:http://d2100.com/questions/29022作为依赖关系的另一个 NSOperation 添加时不调用 NSOperation dealloc使用文书我看到很多我自定义的 NSOperation 永远不会被释放。我已经把一个断点放在 dealloc 方法中,它叫做永远不会。我还注意到作为依赖关系的另一个 NSOperation 添加任何 NSOperation 时出现问题。如果我从我的代码中删除以下句子,称为 myOperation 的 dealloc 方法。[otherOperation addDependency:myOperation];我新建类@interface 阅读全文

posted @ 2012-02-18 21:34 pengyingh 阅读(3466) 评论(0) 推荐(0) 编辑

iphone ios 如何使用gcd,block
摘要:http://blog.sina.com.cn/s/blog_45e2b66c01010dhd.html1。GCD之dispatch queuehttp://www.cnblogs.com/scorpiozj/archive/2011/07/25/2116459.html2。iOS中GCD的魔力http://blog.csdn.net/favormm/article/details/64532603。官方 ,内容真的很多http://developer.apple.com/library/ios/#documentation/Performance/Reference/GCD_libdispa 阅读全文

posted @ 2012-02-18 10:59 pengyingh 阅读(15568) 评论(4) 推荐(4) 编辑

关于IOS多线程的简单总结
摘要:IOS多线程有三种主要方法(1)NSThread(2)NSOperation(3)GCD下面简单介绍这三个方法1.NSThread调用方法如下:如函数需要输入参数,可从object传进去。 (1) [NSThread detachNewThreadSelector:@selector(threadInMainMethod:) toTarget:self withObject:nil]; (2) NSThread* myThread = [[NSThread alloc] initWithTarget:self selector:@selector(threadInMainMethod:).. 阅读全文

posted @ 2012-02-18 10:53 pengyingh 阅读(2024) 评论(0) 推荐(0) 编辑

iOS中GCD的魔力
摘要:GCD(Grand Central Dispatch)是一个大的主题。它可以提高代码的执行效率与多核的利用率。是苹果的开源项目,如果你是一个追求软件效率的开发人员,这门技术你一定要有所研究。今天要介绍的是如何从网上下载大量的文件, 方法有许多,传通的就是用多线程,面iOS中有很好用的Operator Queeu, 或者用传通的NStrhead, pthread. 今天我不介绍这些方法,而是得用GCD来完成这个下载任务。今天这个demo, 展示面几个功能:1. 预定义了大量的要下载的图片URL2. 创建一个GCD queue并开始下载图片3. 在动画出现消失的时候,同时显示图片主要代码:@int 阅读全文

posted @ 2012-02-18 10:32 pengyingh 阅读(262) 评论(0) 推荐(0) 编辑

iOS多线程
摘要:iPhone 中的线程应用并不是无节制的,官方给出的资料显示iPhone OS下的主线程的堆栈大小是1M,第二个线程开始都是512KB。并且该值不能通过编译器开关或线程API函数来更改。 只有主线程有直接修改UI的能力。一、NSOperation和NSOperationQueue 1、一个继承自NSOperation的操作类,该类的实现中必须有 -(void)main方法的。 2、使用NSOperation的最简单方法就是将其放入NSOperationQueue中。 一旦一个操作被加入队列,该队列就会启动并开始处理它(即调用该操作类的main方法)。一旦该操作完成队列就会释放它。 ... 阅读全文

posted @ 2012-02-14 13:05 pengyingh 阅读(1243) 评论(0) 推荐(0) 编辑

iphone开发-多线程
摘要:+ detachNewThreadSelector:toTarget:withObject: 和 - performSelectorInBackground:withObject: 的效果基本一致,如果不打算支持iOS3的话,用GCD要方便很多很多performSelectorOnMainThread是指在主线程上执行某个方法,比如数据下载后,更新UI界面等操作举例说明怎么简单的创建一个子线程。用到的类是NSThread类,这里使用detachNewTheadSelector:toTagaet:withObject创建一个线程。函数setupThread:(NSArray*)userInfor 阅读全文

posted @ 2012-02-10 21:09 pengyingh 阅读(4075) 评论(0) 推荐(0) 编辑

队列的优先级
摘要:在使用NSOperationQueue简化多线程开发中介绍了iOS的操作队列使用方法。这里补充一下队列的优先级功能。假设现在队列中有多个操作(NSOperation),现在再向队列中加入新的操作,并且希望新增加的操作排在未执行操作的最前面。这时就需要设置操作的优先级了。编写了个最简单的NSOperation,头文件:#import <Foundation/Foundation.h>@interface MyOperation : NSOperation{ NSString *name;}@property (nonatomic,retain) NSString *name;@end 阅读全文

posted @ 2012-02-09 15:22 pengyingh 阅读(167) 评论(0) 推荐(0) 编辑

使用NSCondition实现生产者消费者问题
摘要:使用NSCondition,类似Java中的wait,notify机制 可以实现多线程的同步,即,可实现生产者消费者问题。基本思路是,首先要创建公用的NSCondition实例。然后:消费者取得锁,取产品,如果没有,则wait,这时会释放锁,直到有线程唤醒它去消费产品;生产者制造产品,首先也是要取得锁,然后生产,再发signal,语义等同Java的notify,这样可唤醒wait的消费者。示例代码如下:@interface ViewController()-(void)createProducer;-(void)createConsumer;@end@implementation Vie... 阅读全文

posted @ 2012-02-09 15:03 pengyingh 阅读(1373) 评论(0) 推荐(0) 编辑

1 2 下一页

导航