iOS之GCD简单了解使用
来源:互联网 发布:淘宝护肤品假货店铺 编辑:程序博客网 时间:2024/05/18 00:24
Grand Central Dispatch简称GCD
1.任务,即操作分俩种 : 同步执行和异步执行(在GCD中就是一个block)
同步(sync)和异步(async)的主要区别在于会不会阻碍当前线程,知道block结束
如果是同步(sync)操作,会阻碍当前线程并等待block结束,然后才会继续往下执行,如果是异步(async)操作,当先线程会直接往下执行,它不会阻碍当前线程
2.队列:用于存放任务,俩种:串行队列和并行队列
串行队列是根据队列定义FIFO一个一个执行,并行队列则同时进行,注意:如果系统资源不足,任务却很多,并行也不会执行
3.主队列是一个特殊的串行队列,一般用于刷新UI
dispatch_queue_t queue = ispatch_get_main_queue();
4.自己创建队列
自己可以创建 串行队列, 也可以创建 并行队列。看下面的代码(代码已更新),它有两个参数,第一个上面已经说了,第二个才是最重要的。第二个参数用来表示创建的队列是串行的还是并行的,传入 DISPATCH_QUEUE_SERIAL 或 NULL 表示创建串行队列。传入 DISPATCH_QUEUE_CONCURRENT 表示创建并行队。。
//OBJECTIVE-C
//串行队列
dispatch_queue_t queue = dispatch_queue_create(“tk.bourne.testQueue”, NULL);
dispatch_queue_t queue = dispatch_queue_create(“tk.bourne.testQueue”, DISPATCH_QUEUE_SERIAL);
//并行队列
dispatch_queue_t queue = dispatch_queue_create(“tk.bourne.testQueue”, DISPATCH_QUEUE_COURRENT)
5.
下面的是系统的一个并发队列
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
6.组
//1.创建队列组
dispatch_group_t group = dispatch_group_create();
//2.创建队列
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
//3.多次使用队列组的方法执行任务, 只有异步方法
//3.1.执行3次循环
dispatch_group_async(group, queue, ^{
for (NSInteger i = 0; i < 3; i++) {
NSLog(@”group-01 - %@”, [NSThread currentThread]);
}
});
//3.2.主队列执行8次循环
dispatch_group_async(group, dispatch_get_main_queue(), ^{
for (NSInteger i = 0; i < 8; i++) {
NSLog(@”group-02 - %@”, [NSThread currentThread]);
}
});
//3.3.执行5次循环
dispatch_group_async(group, queue, ^{
for (NSInteger i = 0; i < 5; i++) {
NSLog(@”group-03 - %@”, [NSThread currentThread]);
}
});
//4.都完成后会自动通知
dispatch_group_notify(group, dispatch_get_main_queue(), ^{
NSLog(@”完成 - %@”, [NSThread currentThread]);
});
- iOS之GCD简单了解使用
- iOS 多线程之GCD的简单使用
- iOS GCD简单使用
- iOS 多线程之GCD使用
- iOS多线程之GCD简单解析
- 关于iOS GCD的简单使用
- ios-关于GCD的简单使用
- 多线程之GCD的简单使用
- iOS 并行编程之 GCD使用
- 转载:iOS开发之GCD使用总结
- iOS并发编程之GCD使用介绍
- iOS开发之浅谈GCD的使用
- iOS开发之GCD使用总结
- iOS开发之GCD使用总结
- IOS学习之GCD的使用
- iOS多线程编程之GCD的使用
- iOS开发之GCD使用总结
- iOS开发之 KVC,KVO简单了解
- Standard for Programming Language C++
- Android ListView 滑动到指定item 定位 指定位置
- Eclipse将引用了第三方jar包的Java项目打包成jar文件的两种方法
- Java集合框架:Set(HashSet,LinkedHashSet,TreeSet)
- oracle 11g dataguard 出现ORA-16143: 终端恢复过程中或之后不允许进行 RFS 连接解决方法
- iOS之GCD简单了解使用
- 关于JavaScript事件的一些知识
- 每日一得--swt与js的交互
- 在Hibernate Validator 4.1+中,@NotNull, @NotEmpty和@NotBlank之间的区别是什么?
- PhotoSolid技术,软件上的photo stabilization
- Tasklist命令详解
- 区别 #include
- JavaScript 钩子机制
- MP4不是流媒体格式