多线程:并发队列
2016-03-25 23:26
323 查看
// // ViewController.m // 08-并发队列 // // Created by gzxzmac on 16/1/29. // Copyright © 2016年 gzxzmac. All rights reserved. // #import "ViewController.h" @interface ViewController () @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. } - (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event { [self gcdDemo1]; } /* 并发队列 如果是异步的,会开启多个线程 如果是同步的,不会开启线程,会在当前线程执行任务 */ /* GCD 开不开线程跟谁有关系 同步,不会开线程,会在当前线程执行任务 异步,会开线程 GCD开多少线线程跟谁有关系? 跟队列有关系。 并发队列,会开多个线程,线程数由系统来决定 串行队列,只会开启一个线程 由于GCD不能设置开启的线程数,现在有一部份公司已经开始转向使用 NSOperation 一般情况下,手机开多少线程合适? 是wifi 还是 手机网络 -- 网络下载的前提 - 如果是wifi 的可以开到5-6条 - 手机网络 2-3 条就可以了 -- 处理本地大数据 - 手机型号/硬件设备有关系 - 手机接上电源 + 连上 wifi = 自动下载系统 => 3-4G 存在手机上 */ - (void)gcdDemo3 { dispatch_queue_t queue = dispatch_queue_create("itcast", DISPATCH_QUEUE_CONCURRENT); for (int i = 0; i < 200; ++i) { dispatch_sync(queue, ^{ [NSThread sleepForTimeInterval:1]; NSLog(@"%@ %d",[NSThread currentThread],i); }); } } // 并发队列与同步 : 在当前线程执行任务 - (void)gcdDemo2 { dispatch_queue_t queue = dispatch_queue_create("itcast", DISPATCH_QUEUE_CONCURRENT); dispatch_sync(queue, ^{ NSLog(@"%@",[NSThread currentThread]); }); } // 并发队列会开启多个线程,而且任务不按顺序执行 - (void)gcdDemo1 { // 创建并发队列 dispatch_queue_t queue = dispatch_queue_create("itcast", DISPATCH_QUEUE_CONCURRENT); for (int i = 0; i < 200; ++i) { dispatch_async(queue, ^{ [NSThread sleepForTimeInterval:1]; NSLog(@"%@ - %d",[NSThread currentThread],i); }); } } - (void)gcdDemo { // 创建并发队列 dispatch_queue_t queue = dispatch_queue_create("itcast", DISPATCH_QUEUE_CONCURRENT); dispatch_async(queue, ^{ NSLog(@"%@",[NSThread currentThread]); }); } @end
相关文章推荐
- mvn profiles
- linux中断系统那些事之----中断处理过程【转】
- 那些年前端经典面试题
- ftrace 的使用【转】
- 项目已经部署,tomcat已经启动,网址也没问题,却出现404错误
- 弦月下的SQL<4> SQL语言基础
- 代码大全_第3部分: 变量
- Android OkHttp完全解析 是时候来了解OkHttp了
- 多线程:串行队列
- wget完成ftp链接下载
- iOS系统原生二维码条形码扫描
- UVALIVE 3516(DP)
- google工具包
- 设计基于锁的并发数据结构
- Calculator Part Ⅰ (代码规范化修改)
- 程序员必须知道的10大基础实用算法及其讲解
- 1006 of strategy
- 闭关日记 Day13
- 【游戏服务器开发】SDK接入——以nibia为例的SDK接入总结
- 弦月下的SQL<3> 表的创建