多线程:调度组
来源:互联网 发布:知乎炸鱼为业 编辑:程序博客网 时间:2024/05/22 15:33
#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];}- (void)gcdDemo { // 获取一个队列 dispatch_queue_t queue = dispatch_get_global_queue(0, 0); // 创建一个组 dispatch_group_t group = dispatch_group_create(); dispatch_group_async(group, queue, ^{ // 来一组异步 NSLog(@"下载电影A"); }); dispatch_group_async(group, queue, ^{ // 来一组异步 [NSThread sleepForTimeInterval:2]; NSLog(@"下载电影B"); }); dispatch_group_async(group, queue, ^{ // 来一组异步 NSLog(@"下载电影C"); }); // NSNotification 通讯 // window : 下载完关机 dispatch_group_notify(group, queue, ^{ NSLog(@"下载完成"); });}// 调度组在工作中使用的并不多- (void)gcdDemo1 { NSLog(@"start"); /* dispatch_group_async(dispatch_group_t group, dispatch_queue_t queue, dispatch_block_t block) { dispatch_retain(group); dispatch_group_enter(group); // 标记进入组 dispatch_async(queue, ^{ block(); // 执行任务 dispatch_group_leave(group); // 离开组 dispatch_release(group); }); } */ dispatch_queue_t queue = dispatch_get_global_queue(0, 0); dispatch_group_t group = dispatch_group_create(); /* dispatch_group_enter 跟 dispatch_group_leave 必须要成对出现,才可以获取到通知 */ // 进入组 dispatch_group_enter(group); // 执行异步操作 dispatch_async(queue, ^{ [NSThread sleepForTimeInterval:3]; NSLog(@"下载文件A");// block // 离开级 dispatch_group_leave(group); }); dispatch_group_enter(group); // 执行异步操作 dispatch_async(queue, ^{// [NSThread sleepForTimeInterval:1]; NSLog(@"下载文件B");// block // 离开级 dispatch_group_leave(group); }); dispatch_group_notify(group, queue, ^{ NSLog(@"下载完了"); }); // 同步等待多长时间 (网络请求,如果很长时间,请求不成功,超时) dispatch_group_wait(group, dispatch_time(DISPATCH_TIME_NOW, 2 * NSEC_PER_SEC)); NSLog(@"end");}@end
0 0
- 多线程:调度组
- 多线程调度
- 【转载】java多线程调度
- ArrayBlockingQueue调度多线程demo
- Java多线程调度方法
- 多线程脱离状态 + 调度
- ios多线程操作(八)—— GCD调度组
- 刀哥多线程之调度组gcd-12-group
- ios多线程操作(八)—— GCD调度组
- 多线程的调度,以及进程的调度
- 多线程电梯调度仿真程序
- Java多线程:线程调度Join
- 多线程之银行调度系统
- Java多线程调度—优先级
- Java多线程的调度策略
- Java多线程-线程的调度
- java多线程——调度
- linux多线程线程调度策略
- 《写在伤心的时候》
- 周鸿祎:很多程序员聪明,但我一看就知道他不会成功
- HDU:2277 Change the ball(水)(数学)
- css样式
- 标准类的写法
- 多线程:调度组
- MVC 列表分页 Partial内容页
- prism model check 的环境安装设置
- 用TCL(工具命令语言)管理Tornado (for VxWorks) 可启动工程
- JAVA大数据运算系列之大整数相乘
- 设计模式之工厂三姐妹解读(一)
- 轻松使用Nginx搭建web服务器
- android开发中遇到的安全问题
- 二叉树是否对称