IOS-GCD多线程
来源:互联网 发布:plsql输入ip连接数据 编辑:程序博客网 时间:2024/06/10 00:52
同步 & 异步:
区别在于会不会阻塞线程:同步会等待当前任务结束再去执行下一个任务;异步是同时进行执行任务。
串行 & 并行:
dispatch_get_main_queue -->主线程的队列 dispatch_get_global_queue -->全局线程的队列(全局并发的)
简单的例子:
dispatch_async(dispatch_get_global_queue(0,0), ^{ NSLog(@"Task Thread!"); [NSThread sleepTimeInterval:3]; dispatch_async(dispatch_get_main_queue(), ^{ NSLog(@" UI Thread!") });});
自定义线程:
串行:
创建一个自定义的线程,该线程是一个同步线程。如下执行的了两个dispatch_async,实际上是同一个线程,task1和task2会按照先后顺序执行。
默认NULL 就是 DISPATCH_QUEUE_SEARIAL
dispatch_queue_t queue = dispatch_queue_create(@"gcd_queue", NULL);dispatch_async(queue, ^{ NSLog(@"task 1"); [NSthread sleepForTimeInterval:2]; NSLog(@"task 1 over");});dispatch_async(queue, ^{ NSLog(@"task 2"); [NSthread sleepForTimeInterval:2]; NSLog(@"task 2 over");});
并行:
DISPATCH_QUEUE_CONCURRENT 参数创建一个并行的队列。
dispatch_queue_t queue = dispatch_queue_create(@"gcd_queue", DISPATCH_QUEUE_CONCURRENT);dispatch_async(queue, ^{ NSLog(@"task 1"); [NSthread sleepForTimeInterval:2]; NSLog(@"task 1 over");});dispatch_async(queue, ^{ NSLog(@"task 2"); [NSthread sleepForTimeInterval:2]; NSLog(@"task 2 over");});
GCD_group的使用:
dispatch_queue_t queue = dispatch_queue_create(@"gcd_queue", DISPATCH_QUEUE_CONCURRENT);//创建一个groupdispatch_group_t group = dispatch_group_create();dispatch_group_async(group, queue, ^{ NSLog(@"task 1"); [NSthread sleepForTimeInterval:2]; NSLog(@"task 1 over");});dispatch_group_async(group, queue, ^{ NSLog(@"task 2"); [NSthread sleepForTimeInterval:2]; NSLog(@"task 2 over");});dispatch_group_notify(group, queue, ^{ NSLog(@"All task over!"); dispatch_async(dispatch_get_main_queue(), ^{ NSLog(@" UI Thread!") });});
异步线程控制方法:
dispatch_queue_t queue = dispatch_queue_create(@"gcd_queue", DISPATCH_QUEUE_CONCURRENT);//创建一个groupdispatch_group_t group = dispatch_group_create();//载入groupdispatch_group_enter(group); . . //执行内容 .//用完释放groupdispatch_group_leave(group);
阅读全文
0 0
- IOS 多线程 GCD
- GCD ios多线程 runloop
- ios学习 -- GCD多线程
- iOS多线程GCD
- iOS GCD 多线程
- iOS多线程GCD
- iOS多线程GCD
- GCD ios多线程 runloop
- iOS 多线程之----------GCD
- IOS多线程之GCD
- iOS多线程GCD
- iOS 多线程3 GCD
- IOS多线程GCD
- GCD ios多线程 runloop
- IOS 多线程之GCD
- ios多线程-GCD
- iOS多线程GCD
- GCD ios多线程 runloop
- 大整数的因子
- 软考经验
- 无人机驾驶员培训学习记录(四)
- IMAP和POP的区别
- 数据结构与算法(11)---Java语言实现:堆排序
- IOS-GCD多线程
- 对c语言陷阱与缺陷中函数声明理解
- 3. 装饰者模式
- QSS黑色皮肤
- SpringBoot热部署之devtools案例(学习笔记)
- 自定义控件按钮练习
- RabbitMQ+Spring Quartz 实现消息的定时发送和接收
- Nuclear Throne 中文版制作教程及汉化demo版发布
- Idea 添加 运行参数