文档章节

初级多线程

H
 HillYoung
发布于 2014/01/22 10:42
字数 187
阅读 108
收藏 2


-(NSString *)fetchSomethingFromServer

{

    [NSThread sleepForTimeInterval:1];

    return @"Hi there";

}

-(NSString *)processData:(NSString *)data

{

    [NSThread sleepForTimeInterval:2];

    return [data uppercaseString];

}

-(NSString *)calculateFirstResult:(NSString *)data

{

    [NSThread sleepForTimeInterval:3];

    return [NSString stringWithFormat:@"Number of chars:%d",[data length]];

}

-(NSString *)calculateSecondResult:(NSString *)data

{

    [NSThread sleepForTimeInterval:4];

    return [data stringByReplacingOccurrencesOfString:@"E" withString:@"e"];

}

-(void)doWork:(id)sender

{

    NSDate *startTime=[NSDate date];

    __block NSString *resultsSummary=@"a";

    

    self.startButton.enabled=NO;

    self.startButton.alpha=0.5;

    [self.spinner startAnimating];

    

    //设置分派组和队列

    dispatch_queue_t queue=dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);

    

    dispatch_async(queue, ^{

        

    NSString *fetchedData=[self fetchSomethingFromServer];

    NSString *processedData=[self processData:fetchedData];

        

        __block NSString *firstResult;

        __block NSString *secondResult;

        

    dispatch_group_t group=dispatch_group_create();

    

        dispatch_group_async(group, queue, ^{

        

            firstResult=[self calculateFirstResult:processedData];

        });

        dispatch_group_async(group, queue, ^{

            secondResult=[self calculateSecondResult:processedData];

        });

        

        dispatch_group_notify(group, queue, ^{

            

           resultsSummary=[NSString stringWithFormat:@"First:[%@]\nSecond:[%@]",firstResult,secondResult];

            NSLog(@"继续运行-->%@",resultsSummary);

        });

        

//    NSString *firstResult=[self calculateFirstResult:processedData];

//    NSString *secondResult=[self calculateSecondResult:processedData];

//    NSString *resultsSummary=[NSString stringWithFormat:@"First:[%@]\nSecond:[%@]",firstResult,secondResult];

    

    dispatch_async(dispatch_get_main_queue(), ^{

    self.resultsTextView.text=resultsSummary;

        NSLog(@"继续运行-->%@",resultsSummary);

        self.startButton.enabled=YES;

        self.startButton.alpha=1.0;

        [self.spinner stopAnimating];

    });

        

    NSDate *endTime=[NSDate date];

    NSLog(@"Completed in %f seconds",[endTime timeIntervalSinceDate:startTime]);

    });

}


© 著作权归作者所有

共有 人打赏支持
H
粉丝 14
博文 97
码字总数 26819
作品 0
南京
程序员
私信 提问
Hashtable程序员面试五分钟被请出来了

你们可能会想,栈长这么菜的吗?5分钟都坚持不了? 本文说起来会有点尴尬,毕竟这是栈长我曾经经历过的故事。。。 那时候的栈长还真菜,每天写着 if/ for 及一些简单的业务逻辑代码,虽工作有...

金铭鼎IT教育
2018/12/17
0
0
周末去面试,进去 5 分钟就出来了…

你们可能会想,栈长这么菜的吗?5分钟都坚持不了? 本文说起来会有点尴尬,毕竟这是栈长我曾经经历过的故事。。。 那时候的栈长还真菜,每天写着 if/ for 及一些简单的业务逻辑代码,虽工作有...

Java技术栈
2018/12/17
0
0
程序员周末阿里面试,5分钟就被一道题秒杀:HashMap与Hashtable

你们可能会想,我这么菜的吗?5分钟都坚持不了? 本文说起来会有点尴尬,毕竟这是我曾经经历过的故事 那时候的我还真菜,每天写着 if/ for 及一些简单的业务逻辑代码,虽工作有些日子了,但技...

我最喜欢三大框架
03/17
0
0
服务器后端开发系列——《实战Memcached内存缓存系统》

1、实战Memcached缓存系统(1)Memcached基础及示例程序 内容:建筑Memcached背景知识和入门示例程序。 2、实战Memcached缓存系统(2)Memcached Java API基础之MemcachedClient 内容:以Mem...

晨曦之光
2012/04/24
98
0
程序员:为什么选择Java?

版权声明:本文为北京尚学堂原创文章,未经允许不得转载。 大多数人选择Java可能只是因为听说Java前景好、Java比较好找工作、Java语言在TIOBE排行榜上一直位于前三等等之类的原因,但是Java具...

SXTkaifa
2016/11/15
35
0

没有更多内容

加载失败,请刷新页面

加载更多

C++ vector和list的区别

1.vector数据结构 vector和数组类似,拥有一段连续的内存空间,并且起始地址不变。 因此能高效的进行随机存取,时间复杂度为o(1); 但因为内存空间是连续的,所以在进行插入和删除操作时,会造...

shzwork
今天
3
0
Spring之invokeBeanFactoryPostProcessors详解

Spring的refresh的invokeBeanFactoryPostProcessors,就是调用所有注册的、原始的BeanFactoryPostProcessor。 相关源码 public static void invokeBeanFactoryPostProcessors(Configu......

cregu
昨天
4
0
ibmcom/db2express-c_docker官方使用文档

(DEPRECIATED) Please check DB2 Developer-C Edition for the replacement. What is IBM DB2 Express-C ? ``IBM DB2 Express-C``` is the no-charge community edition of DB2 server, a si......

BG2KNT
昨天
3
0
Ubuntu 18.04.2 LTS nvidia-docker2 : 依赖: docker-ce (= 5:18.09.0~3-0~ubuntu-bionic)

平台:Ubuntu 18.04.2 LTS nvidia-docker2 版本:2.0.3 错误描述:在安装nvidia-docker2的时候报dpkg依赖错误 nvidia-docker2 : 依赖: docker-ce (= 5:18.09.0~3-0~ubuntu-bionic) 先看一下依......

Pulsar-V
昨天
4
0
学习笔记1-goland结构体(struct)

写在前面:若有侵权,请发邮件by.su@qq.com告知。 转载者告知:如果本文被转载,但凡涉及到侵权相关事宜,转载者需负责。请知悉! 本文永久更新地址:https://my.oschina.net/bysu/blog/3036...

不最醉不龟归
昨天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部