读书人

应用GCD实现多线程

发布时间: 2012-09-16 17:33:17 作者: rapoo

使用GCD实现多线程

GCD是Grand Central Dispatch的简称,是建立在BSD层面上的接口,在Mac 10.6和iOS4.0之后才引入的。而且现在的NSOperation与NSoperationQueue的多线程实现就是基于GCD实现的。目前这个特性被移植到了FreeBSD上了,可以查看libdispatch这个开源项目。

在使用GCD 之前,先添加libsystem.dylib动态加载库,在头文件引入#import《dispatch/dispatch.h》,之后就可以程序中使用GCD了

下面以我的程序中的一个代码片段为例:

先创建线程实例:dispatch_queue_t network_queue=dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0);

将需要处理大量数据,费时的代码放进次级线程

 dispatch_async(network_queue, ^{        NSString *secondHtml=[[[NSString alloc]init]autorelease];        NSURL *url=[NSURL URLWithString:@"http://map.mapbar.com/"];        self.parseHtml=[[ParserHtml alloc]initWithHtml:url andTag:@"a"];        //得到对应城市名的第二个页面地址        secondHtml=[self.parseHtml ParserHtml];        NSString *text=[[[NSString alloc]init]autorelease];        text=[self.parseHtml ParseSecondHtml:[NSURL URLWithString:secondHtml] andTag:@"_3"];        NSLog(@"%@",text);        //返回主线程        dispatch_async(dispatch_get_main_queue(), ^{            //设置标题            jidiaoAppDelegate *single=[[UIApplication sharedApplication]delegate];            self.title=[single.cityName stringByAppendingString:@"历史"];                        self.textView =[[UITextView alloc]initWithFrame:CGRectMake(10, 10, 300, 400)];            self.textView.text=text;            self.textView.delegate=self;            self.view.backgroundColor=[UIColor blueColor];            self.textView.textAlignment=UITextAlignmentLeft;            [self.view addSubview:self.textView];        });    });
以上内容是我的个人见解,由于刚刚接触到多线程,不免有很多瑕疵,以及术语的错误,还望多多指教。

更多内容,请访问:http://geeklu.com/2012/02/thread/

http://www.cnblogs.com/scorpiozj/archive/2011/07/25/2116459.html


读书人网 >移动开发

热点推荐