2012年8月21日
摘要: 在iOS网络编程中,我们经常会遇到线程的同步和异步问题,同时为了对异步请求更加精准丰富的控制,我们还常常在iOS中使用请求队列,下面就来谈谈iOS开发中同步、异步以及请求队列的使用方法。1. 同步意为着线程阻塞,在主线程中使用此方法会不响应任何用户事件。所以,在应用程序设计时,大多被用在专门的子线程增加用户体验,或用异步请求代替。12345678910- (IBAction)grabURL:(id)sender { NSURL *url = [NSURL URLWithString:@"http://allseeing-i.com"]; ASIHTTPRequest *re 阅读全文
posted @ 2012-08-21 16:17 easonoutlook 阅读(9795) 评论(0) 推荐(0) 编辑
摘要: 多线程和异步操作的异同 多线程和异步操作两者都可以达到避免调用线程阻塞的目的,从而提高软件的可响应性。甚至有些时候我们就认为多线程和异步操作是等同的概念。但是,多线程和异步操作还是有一些区别的。而这些区别造成了使用多线程和异步操作的时机的区别。 异步操作的本质 所有的程序最终都会由计算机硬件来执行,所以为了更好的理解异步操作的本质,我们有必要了解一下它的硬件基础。 熟悉电脑硬件的朋友肯定对DMA这个词不陌生,硬盘、光驱的技术规格中都有明确DMA的模式指标,其实网卡、声卡、显卡也是有DMA功能的。DMA就是直接内存访问的意思,也就是说,拥有DMA功能的硬件在和内存进行数据交换的时候可以不消... 阅读全文
posted @ 2012-08-21 16:16 easonoutlook 阅读(27519) 评论(0) 推荐(4) 编辑
摘要: 使用NSCondition,实现多线程的同步,即,可实现生产者消费者问题。基本思路是,首先要创建公用的NSCondition实例。然后:消费者取得锁,取产品,如果没有,则wait,这时会释放锁,直到有线程唤醒它去消费产品;生产者制造产品,首先也是要取得锁,然后生产,再发signal,这样可唤醒wait的消费者。- (IBAction)conditionTest:(id)sender{ NSLog(@"begin condition works!"); products = [[NSMutableArray alloc] init]; condition = [[NSCond 阅读全文
posted @ 2012-08-21 15:15 easonoutlook 阅读(12633) 评论(1) 推荐(1) 编辑
摘要: 主要用于讲解NSThread多线程的使用;从线程创建与启动、线程的同步与锁、线程的交互、线程池等等四个方面简单的讲解一下iphone中的多线程编程;一、线程创建与启动线程创建主要有二种方式:- (id)init; // designated initializer- (id)initWithTarget:(id)target selector:(SEL)selector object:(id)argument;当然,还有一种比较特殊,就是使用所谓的convenient method,这个方法可以直接生成一个线程并启动它,而且无需为线程的清理负责。这个方法的接口是:+ (void)detachN 阅读全文
posted @ 2012-08-21 13:57 easonoutlook 阅读(6189) 评论(0) 推荐(0) 编辑