使用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


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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值