首页 / IOS / iOS 开发之多线程之GCD
iOS 开发之多线程之GCD
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了iOS 开发之多线程之GCD,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1524字,纯文字阅读大概需要3分钟。
内容图文
![iOS 开发之多线程之GCD](/upload/InfoBanner/zyjiaocheng/1324/5b6e41a7b4f941bfac4c5d133d1f0851.jpg)
1.GCD(Grand Centrol Dispath)
并行:宏观以及微观都是两个人再拿着两把铁锹在挖坑,一小时挖两个大坑
并发:宏观上是感觉他们都在挖坑,微观是他们是在使用一把铁锹挖坑,一小时后他们挖了两个小坑。
总结:就单个cpu来说,大部分进程是并发进行的,就是一把铁锹,你一下我一下,只是间隔时间较短,用户感觉不到而已。
应用:
GCD包括:
(1)实际使用中
//dispatch_get_global_queue(0, 0)第一个0是优先级,第二个保留字段
dispatch_async(dispatch_get_global_queue(0, 0), ^{
//在这里可以是数据请求
NSString* result = [self requestData:parameter];
//在这里返回主线程刷新数据
dispatch_async(dispatch_get_main_queue(), ^{
[mainTableView reloadData];
});
});
举例说明:
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
NSURL * url = [NSURL URLWithString:@"http://www.baidu.com"];
NSError * error;
NSString * data = [NSString stringWithContentsOfURL:url encoding:NSUTF8StringEncoding error:&error];
if (data != nil) {
dispatch_async(dispatch_get_main_queue(), ^{
NSLog(@"call back, the data is: %@", data);
});
} else {
NSLog(@"error when download:%@", error);
}
});
(2)也可以自己创建(我是不怎么用)
串行队列,顾名思义,一串嘛,那就得并发执行喽
//自己创建serial queue
dispatch_queue_t queue = dispatch_queue_create("com.class15.queue", DISPATCH_QUEUE_SERIAL);
//异步执行线程
dispatch_async(queue, ^{
NSLog(@"任务1:%@ %d", [NSThread currentThread],[NSThread currentThread].isMainThread);
});
并行队列通过dispatch_get_global_queue获取,由系统创建三个不同优先级的dispatch queue
//创建自己的队列
dispatch_queue_t queue = dispatch_queue_create("com.class15.comcrrentQueue", DISPATCH_QUEUE_CONCURRENT);
dispatch_async(queue, ^{
NSLog(@"任务1:%@ %d", [NSThread currentThread],[NSThread currentThread].isMainThread);
});
原文:http://blog.csdn.net/u013375242/article/details/41601833
内容总结
以上是互联网集市为您收集整理的iOS 开发之多线程之GCD全部内容,希望文章能够帮你解决iOS 开发之多线程之GCD所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。