iOS 多线程-GCD
来源:互联网 发布:太原哪里购买知豆d3 编辑:程序博客网 时间:2024/06/09 14:56
GCD对于刚入门的程序猿猴来说乍看很神秘的样子,其实只要掌握了他的原理,就像我们用某个控件的代理方法一样简单。
摘自网上资料:
GCD,全称Grand Central Dispath,是苹果开发的一种支持并行操作的机制。它的主要部件是一个FIFO队列和一个线程池,前者用来添加任务,后者用来执行任务。
GCD中的FIFO队列称为dispatch queue,它可以保证先进来的任务先得到执行(但不保证一定先执行结束)。
通过与线程池的配合,dispatch queue分为下面两种:
- Serial Dispatch Queue -- 线程池只提供一个线程用来执行任务,所以后一个任务必须等到前一个任务执行结束才能开始。
- Concurrent Dispatch Queue -- 线程池提供多个线程来执行任务,所以可以按序启动多个任务并发执行。
我们可以通过dispatch_queue_cretae来创建队列,然后用dispatch_release释放。比如下面两段代码分别创建串行队列和并行队列:
- dispatch_queue_t serialQ = dispatch_queue_create("eg.gcd.SerialQueue", DISPATCH_QUEUE_SERIAL);
- dispatch_async(serialQ, ^{
- // Code here
- });
- dispatch_release(serialQ);
- dispatch_queue_t concurrentQ = dispatch_queue_create("eg.gcd.ConcurrentQueue", DISPATCH_QUEUE_CONCURRENT);
- dispatch_async(concurrentQ, ^{
- // Code here
- });
- dispatch_release(concurrentQ);
- dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
- // long-running task
- dispatch_async(dispatch_get_main_queue(), ^{
- // update UI
- });
- });
2.dispatch_once这个函数,它可以保证整个应用程序生命周期中某段代码只被执行一次!
- static dispatch_once_t onceToken;
- dispatch_once(&onceToken, ^{
- // code to be executed once
- });
3.有时候我们需要等个几秒钟然后做个动画或者给个提示,这时候可以用dispatch_after这个函数:
- double delayInSeconds = 2.0;
- dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, delayInSeconds * NSEC_PER_SEC);
- dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
- // code to be executed on the main queue after delay
- });
0 0
- iOS 多线程-GCD
- iOS 开发多线程 - GCD
- iOS多线程编程-GCD
- iOS-GCD多线程编程详解1
- 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
- 戴维南等效电路计算
- Oracle 外部表的相关操作
- 打印java web页面内容代码大全
- spark学习一 基本概念理解
- Android使用动画过程中又设置了View的LayoutParams有卡顿现象处理
- iOS 多线程-GCD
- 使SQL用户只能看到自己拥有权限的库
- 王健林电商梦为何会是一场噩梦?
- Myeclipse deBUG模式 鼠标悬停显示相关参数问题
- Linux计划任务及ntp服务
- Map元素的两种取出方式练习
- 【POJ 1226】Substrings【后缀数组】
- Java解析URL传输的数据
- 中国好声音3第一期学员背景扒皮